6

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

我尝试在网上搜索,但似乎找不到明确的答案。

我希望有一个人可以帮助我。

问候,乍得

4

3 回答 3

12

使用自定义 TableCellRenderer,并指定setHorizontalAlignment(JLabel.RIGHT). 这里有一个相关的例子说明了JLabel.CENTER.

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

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

setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 5));
于 2013-06-19T10:07:14.690 回答
11

@trashgod 正确答案的略微增强版本是将边框与填充混合:这样做可以保证默认边框(焦点指示器)不会丢失:

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;
    }

};

或者使用SwingX ' JXTable 并用荧光笔装饰渲染器:

BorderHighlighter hl = new BorderHighlighter(
    BorderFactory.createEmptyBorder(0, 10, 0, 10));
hl.setInner(true);
table.addHighlighter(hl);
于 2013-06-19T10:46:14.490 回答
4

尝试使用 JTable 的 setInternalcellSpacing(Dimension d)。这将在两侧设置空间。如果您严格希望在一侧使用渲染器,如下所示

于 2013-06-19T10:01:55.133 回答