我想在JTable列中添加右填充,是否可能?

时间:2013-06-19 09:48:45

标签: java swing jtable tablecellrenderer

我想在JTable的列中添加正确的cell-padding,我该怎么做?

我尝试在线搜索,但似乎无法找到明确的答案。

我希望有人可以帮助我。

此致 乍得

3 个答案:

答案 0 :(得分:10)

使用custom TableCellRenderer,并指定setHorizontalAlignment(JLabel.RIGHT)。有一个相关示例here,用于说明JLabel.CENTER

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

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

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

答案 1 :(得分:10)

@ trashgod正确答案的略微增强版本是将边框与填充复合:这样做可以保证默认边框(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;
    }

};

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

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

答案 2 :(得分:2)

尝试使用JTable的setInternalcellSpacing(Dimension d)。这将在两侧设置空格。如果您想在一侧使用它,请使用渲染器here