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()); } }