ToF*_*oFi 2 java swing jtable tablecellrenderer
我正在尝试实现Swing JTable.我在http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#simple上关注了tuorial
我希望表格单元格不可编辑(这个工作),我希望表格单元格有更多填充到它的边框.就像HTML中的cellpadding一样.
这是我的代码的一部分,并且cellpadding事情不起作用.
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());
Run Code Online (Sandbox Code Playgroud)
table放在一个JScrollPane.显示该表,单元格不可编辑但不应用cellpadding!
有人可以帮忙吗?谢谢 :)
的默认实现getColumnClass()中DefaultTableModel所使用的JTable(默认)的回报Object.class.这就是BoardTableCellRenderer没有使用的原因,因为你正在为列设置它String.class.
你可以覆盖getColumnClass.或者在此示例的情况下,替换:
table.setDefaultRenderer(String.class, new BoardTableCellRenderer());
Run Code Online (Sandbox Code Playgroud)
有:
table.setDefaultRenderer(Object.class, new BoardTableCellRenderer());
Run Code Online (Sandbox Code Playgroud)
看到的效果BoardTableCellRenderer.
| 归档时间: |
|
| 查看次数: |
7137 次 |
| 最近记录: |