Автоматическая нумерация строк в таблице javafx
у меня есть пример кода, который мы используем для динамических рядов строку Java
Swing
таблица i.e JTable
. Я новичок в JavaFX
и хотел бы то же самое в JavaFX
. Есть ли способ установить автоматические номера строк в JavaFX
стол
class LineNumberTable extends JTable {
private JTable mainTable;
public LineNumberTable(JTable table) {
super();
mainTable = table;
setAutoCreateColumnsFromModel(false);
setModel(mainTable.getModel());
setAutoscrolls(false);
addColumn(new TableColumn());
getColumnModel().getColumn(0).setCellRenderer(mainTable.getTableHeader().getDefaultRenderer());
getColumnModel().getColumn(0).setPreferredWidth(40);
setPreferredScrollableViewportSize(getPreferredSize());
}
@Override
public boolean isCellEditable(int row, int col) {
if (col == uneditableColumn) {
return false;
}
return bEdit;
}
@Override
public Object getValueAt(int row, int column) {
return Integer.valueOf(row + 1);
}
@Override
public int getRowHeight(int row) {
return mainTable.getRowHeight();
}
}
1 ответов
в JavaFX, вы используете TableColumn
s с CellFactories и CellValueFactories для заполнения вашего TableView
.
учебники JavaFX имеют статьи это может заставить вас начать.
в одном из подходов, который я использовал, я преобразую бизнес-объекты для отображения в объекты презентации и добавляю к ним все необходимые свойства (например, в вашем случае номер).
EDIT: во втором, более чистом подходе вы можете установить свой CellFactory в создать TableCell
Это показывает свой собственный index
в собственность TableCell#updateItem(S, boolean)
:
public class NumberedCell extends TableCell{
protected void updateItem(Object object, boolean selected){
setText(String.valueOf(getIndex());
}
}