Java 我想给JTable列添加一个正确的填充,可以吗?

Java 我想给JTable列添加一个正确的填充,可以吗?,java,swing,jtable,tablecellrenderer,Java,Swing,Jtable,Tablecellrenderer,我想在JTable中的列中添加正确的单元格填充,我该怎么做 我试着在网上搜索,但似乎找不到一个明确的答案 我希望有人能帮助我 问候,, Chad尝试使用JTable的setInternalcellSpacing(维度d)。这将在两侧设置空格。如果您严格希望它位于一侧,请使用渲染器作为使用TableCellRenderer,并指定setHorizontalAlignment(JLabel.RIGHT)。有一个相关的例子说明了JLabel.CENTER 附录:我的问题是填充,而不是对齐 如果希望填充

我想在JTable中的列中添加正确的单元格填充,我该怎么做

我试着在网上搜索,但似乎找不到一个明确的答案

我希望有人能帮助我

问候,,
Chad

尝试使用JTable的setInternalcellSpacing(维度d)。这将在两侧设置空格。如果您严格希望它位于一侧,请使用渲染器作为使用
TableCellRenderer
,并指定
setHorizontalAlignment(JLabel.RIGHT)
。有一个相关的例子说明了
JLabel.CENTER

附录:我的问题是填充,而不是对齐

如果希望填充在单元格内部,而不是单元格之间,可以在渲染器中使用边框,正如@Guillaume Polet所建议的那样。注意,边界可以是不对称的;下面的示例仅在右侧显示

setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 5));

@trashgood正确答案的一个稍微增强的版本是用填充物复合边框:这样做可以保证默认边框(f.i.焦点指示器)不会丢失:

DefaultTableCellRenderer r = new DefaultTableCellRenderer() {

    Border padding = BorderFactory.createEmptyBorder(0, 10, 0, 10);
    @Override
    public Component getTableCellRendererComponent(JTable table,
            Object value, boolean isSelected, boolean hasFocus,
            int row, int column) {
        super.getTableCellRendererComponent(table, value, isSelected, hasFocus,
                row, column);
        setBorder(BorderFactory.createCompoundBorder(getBorder(), padding));
        return this;
    }

};
或者使用“JXTable”并用荧光笔装饰渲染器:

BorderHighlighter hl = new BorderHighlighter(
    BorderFactory.createEmptyBorder(0, 10, 0, 10));
hl.setInner(true);
table.addHighlighter(hl);

什么是
setInternalSpacing
?@trashgood他可能指的是
javax.swing.JTable.setIntercellSpacing(Dimension)
是的,我指的是javax.swing.JTable.setIntercellSpacing(Dimension),它设置行边距和列边距(单元格之间空间的高度和宽度),但我的问题是填充而不是对齐。也可以使用自定义TableCellRenderer调整单元格填充吗?@Chad Yes,只需指定
setBorder(BorderFactory.createEmptyByOrder(5,5,5,5))我已经在上面详细阐述了@Guillaume Polet的建议。@pstanton:你能改变一下吗?谢谢@Trashgood刚刚把那部分也弄明白了。秋千有时就像一个拼图游戏。