javafx表中的自动行编号
我有一个示例代码,我们用它来表示Java
Swing
Table中的动态行号,即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(); } }
在JavaFX中,您将TableColumn
与CellFactories和CellValueFactories一起使用来填充TableView
。
JavaFX教程有一篇文章可能会帮助您入门。
在我使用的一种方法中,我将业务对象转换为显示为表示对象,并将所有必需的属性(如您的情况下,数字)添加到它们。
编辑:在第二种更清洁的方法中,您可以将CellFactory设置为创建一个TableCell
,在TableCell#updateItem(S, boolean)
中显示自己的index
属性:
public class NumberedCell extends TableCell{ protected void updateItem(Object object, boolean selected){ setText(String.valueOf(getIndex()); } }