Ответ 1
DefaultTableCellRenderer rightRenderer = new DefaultTableCellRenderer();
rightRenderer.setHorizontalAlignment(JLabel.RIGHT);
table.getColumnModel().getColumn(4).setCellRenderer(rightRenderer);
Я создаю приложение для биллинга. Я хочу, чтобы столбец количества отображался с правильным выравниванием. Как установить правильное выравнивание для столбца JTable?
DefaultTableCellRenderer rightRenderer = new DefaultTableCellRenderer();
rightRenderer.setHorizontalAlignment(JLabel.RIGHT);
table.getColumnModel().getColumn(4).setCellRenderer(rightRenderer);
Попробуйте следующее:
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;
}
};
См. Концепции: Редакторы и средства визуализации, отмечая " Number
- отображается с помощью выровненной по правому краю метки". Просто TableModel
ваша TableModel
возвращает правильный класс. В качестве конкретного примера, обратите внимание, что Integer
является Number
, при рассмотрении реализации getColumnClass()
в этом примере. В этом связанном примере нулевой colIndex
возвращает Object.class
, который "отображается с помощью метки, отображающей значение строки объекта". По умолчанию метка выравнивается по левому краю.
switch (colIndex) {
case 0: return Object.class;
…
}
Напротив, Integer.class
"визуализируется выравниванием по правому краю".
switch (colIndex) {
case 0: return Integer.class;
…
}
Это примеры использования литералов класса в качестве токенов типа времени выполнения, обсуждаемых здесь в контексте JTable
.
Вам нужно будет получить DefaultTableCellRenderer для ячеек таблицы и вызвать setHorizontalAlignment (выравнивание).
Пример можно найти по ссылкам:
http://www.techrepublic.com/article/how-to-justify-data-in-a-jtable-cell/5032692/
http://www.coderanch.com/t/337549/GUI/java/align-data-columns-JTable