将cellpadding添加到Java JTable
我正在尝试实现一个Swing JTable。我跟着火车继续前行 我希望表格单元格不可编辑(这是可行的),我希望表格单元格的边框有更多的填充。就像HTML中的填充一样 这是我代码的一部分,而手机填充功能不起作用将cellpadding添加到Java JTable,java,swing,jtable,tablecellrenderer,Java,Swing,Jtable,Tablecellrenderer,我正在尝试实现一个Swing JTable。我跟着火车继续前行 我希望表格单元格不可编辑(这是可行的),我希望表格单元格的边框有更多的填充。就像HTML中的填充一样 这是我代码的一部分,而手机填充功能不起作用 class BoardTableCellRenderer extends DefaultTableCellRenderer { private static final long serialVersionUID = 1L; public Component getTa
class BoardTableCellRenderer extends DefaultTableCellRenderer {
private static final long serialVersionUID = 1L;
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int col) {
super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, col);
setBorder(BorderFactory.createEmptyBorder(15,15,15,15));
return this;
}
}
String[] columnNames = {"Datei",
"Zeile",
"Zeichen",
"Fehler", "test"};
Object[][] data = {
{"Kathy", "Smith", "Snowboarding", new Integer(5), new Boolean(false)},
{"John", "Doe", "Rowing", new Integer(3), new Boolean(true)},
{"Sue", "Black", "Knitting", new Integer(2), new Boolean(false)},
{"Jane", "White", "Speed reading", new Integer(20), new Boolean(true)},
{"Joe", "Brown", "Pool", new Integer(10), new Boolean(false)}
};
JTable table = new JTable(data, columnNames){
private static final long serialVersionUID = -4430174981226468686L;
@Override
public boolean isCellEditable(int arg0, int arg1) {
return false;
}};
table.setAutoCreateRowSorter(true);
table.getTableHeader().setReorderingAllowed(false);
table.setDefaultRenderer(String.class, new BoardTableCellRenderer());
表格
放在JScrollPane
上。显示表格,单元格不可编辑,但不应用单元格填充
有人能帮忙吗?谢谢:)默认实现
DefaultTableModel
中的getColumnClass()
,由JTable
使用(默认情况下)返回Object.class
。这就是为什么不使用BoardTableCellRenderer
,因为您正在为具有String.class
的列设置它
您可以重写getColumnClass
。或者,如果是此样品,则更换:
table.setDefaultRenderer(String.class, new BoardTableCellRenderer());
与:
table.setDefaultRenderer(Object.class, new BoardTableCellRenderer());
查看
BoardTableCellRenderer
的效果 为了更快地获得更好的帮助,请发布一条消息。您可以尝试三种方法。您可以尝试提供一个自定义单元格渲染器,该渲染器应用了EmptyBorder
,对于每一列,单元格编辑器执行相同的操作和/或更改tableFor的行高属性。根据OP在tenorsax的回答中的评论,似乎实际上您无法使用此边框技术来更改顶部/底部填充。如果是这样的话,你有两个选择:行高和/或设置单元格间距。谢谢,这样做很有效。。。但是,自定义BoardTableCellRenderer()
中的15px边框只渲染左/右
填充,而不渲染上/下
。对于顶部/底部,我必须在JTable本身上添加setRowHeight(25)
。。。