Я создаю приложение для биллинга. Я хочу, чтобы столбец суммы отображался с выравниванием по правому краю. Как установить правильное выравнивание для столбца 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
См. раздел Концепции: Editors and Renderers, отмечая "Number
- отображается выровненной по правому краю меткой". Просто пусть ваша TableModel
возвращает правильный класс. В качестве конкретного примера обратите внимание, что Integer
является Number
, рассматривая реализацию getColumnClass()
в этом примере. В этом связанном примере нулевой colIndex
возвращает Object.class
, который "отображается меткой, показывающей строковое значение объекта". По умолчанию метка выровнена по левому краю.
switch (colIndex) {
case 0: return Object.class;
…
}
Напротив, Integer.class
"отображается меткой с правым выравниванием."
switch (colIndex) {
case 0: return Integer.class;
…
}
Это примеры использования Литералов классов как маркеров Runtime-Type, которые обсуждались здесь в контексте JTable
.
Попробуйте так:
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;
}
};