将cellpadding添加到Java JTable

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!

有人可以帮忙吗?谢谢 :)

ten*_*ica 6

的默认实现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.