JTable 右对齐标题

基本上,我有一个JTable,其中包含带有右对齐单元格的列,但左对齐的标题看起来非常糟糕。我想在这些列的标题上右对齐,而不改变标题的“外观和感觉”。

谢谢


答案 1

下面是修改表的 JTableHeader 的替代方法。对于此用法,这并不是绝对必要的,但它可以最大程度地减少对 UI 委托外观的影响。TableCellRenderer

典型用法:

JTable table = new JTable(…);
JTableHeader header = table.getTableHeader();
header.setDefaultRenderer(new HeaderRenderer(table));

自定义标头呈现器:

private static class HeaderRenderer implements TableCellRenderer {

    DefaultTableCellRenderer renderer;

    public HeaderRenderer(JTable table) {
        renderer = (DefaultTableCellRenderer)
            table.getTableHeader().getDefaultRenderer();
        renderer.setHorizontalAlignment(JLabel.CENTER);
    }

    @Override
    public Component getTableCellRendererComponent(
        JTable table, Object value, boolean isSelected,
        boolean hasFocus, int row, int col) {
        return renderer.getTableCellRendererComponent(
            table, value, isSelected, hasFocus, row, col);
    }
}

答案 2

试试这个:

((DefaultTableCellRenderer)table.getTableHeader().getDefaultRenderer())
    .setHorizontalAlignment(JLabel.RIGHT);

推荐