Установить правильное выравнивание в столбце JTable

Я создаю приложение для биллинга. Я хочу, чтобы столбец количества отображался с правильным выравниванием. Как установить правильное выравнивание для столбца JTable?

Ответы

Ответ 1

DefaultTableCellRenderer rightRenderer = new DefaultTableCellRenderer();
rightRenderer.setHorizontalAlignment(JLabel.RIGHT);
table.getColumnModel().getColumn(4).setCellRenderer(rightRenderer);

Ответ 2

Попробуйте следующее:

JTable tbl = new JTable(3,3) {
    DefaultTableCellRenderer renderRight = new DefaultTableCellRenderer();

    { // initializer block
        renderRight.setHorizontalAlignment(SwingConstants.RIGHT);
    }

    @Override
    public TableCellRenderer getCellRenderer (int arg0, int arg1) {
        return renderRight;
    }
};

Ответ 3

См. Концепции: Редакторы и средства визуализации, отмечая " Number - отображается с помощью выровненной по правому краю метки". Просто TableModel ваша TableModel возвращает правильный класс. В качестве конкретного примера, обратите внимание, что Integer является Number, при рассмотрении реализации getColumnClass() в этом примере. В этом связанном примере нулевой colIndex возвращает Object.class, который "отображается с помощью метки, отображающей значение строки объекта". По умолчанию метка выравнивается по левому краю.

switch (colIndex) {
    case 0: return Object.class;
    …
}

left-aligned

Напротив, Integer.class "визуализируется выравниванием по правому краю".

switch (colIndex) {
    case 0: return Integer.class;
    …
}

right-aligned

Это примеры использования литералов класса в качестве токенов типа времени выполнения, обсуждаемых здесь в контексте JTable.