将cellpadding添加到Java JTable

将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

我正在尝试实现一个Swing JTable。我跟着火车继续前行

我希望表格单元格不可编辑(这是可行的),我希望表格单元格的边框有更多的填充。就像HTML中的填充一样

这是我代码的一部分,而手机填充功能不起作用

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)
。。。