JTable右对齐标题

Dre*_*ith 25 java user-interface swing jtable jtableheader

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

谢谢

tra*_*god 43

这是修改TableCellRenderer表格的另一种方法JTableHeader.这种用法并不是绝对必要的,但它最大限度地减少了对UI代表外观的影响.

典型用法:

JTable table = new JTable(…);
JTableHeader header = table.getTableHeader();
header.setDefaultRenderer(new HeaderRenderer(table));
Run Code Online (Sandbox Code Playgroud)

自定义标题渲染器:

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);
    }
}
Run Code Online (Sandbox Code Playgroud)


Eng*_*uad 36

试试这个:

((DefaultTableCellRenderer)table.getTableHeader().getDefaultRenderer())
    .setHorizontalAlignment(JLabel.RIGHT);
Run Code Online (Sandbox Code Playgroud)

  • 无需循环 - 标头只有_one_默认渲染器:-) (2认同)

cha*_*hun 5

DefaultTableCellRenderer renderer = (DefaultTableCellRenderer) your_jtable.getTableHeader().getDefaultRenderer();
renderer.setHorizontalAlignment(0);
Run Code Online (Sandbox Code Playgroud)

0中心在哪里.

  • 而不是'0`我建议`SwingConstants.CENTER`. (5认同)