在JavaFX的表自动排编号(Automatic row numbering in javafx t

2019-07-03 22:51发布

我有一个我们用来在动态行号的样本代码Java Swing表即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();
            }
        }

Answer 1:

在JavaFX中,您使用TableColumn s的CellFactories和CellValueFactories来填充你TableView

JavaFX的教程有一个文章 ,可能让你开始。

在一种方法我用我的转换业务对象,以显示为演示文稿对象,并(在你的情况一样,数量)添加所有必要的属性给他们。

编辑:在第二,更简洁的方法,你可以设置你的CellFactory创建一个TableCell ,显示了自己的index财产TableCell#updateItem(S, boolean)

public class NumberedCell extends TableCell{

  protected void updateItem(Object object, boolean selected){
    setText(String.valueOf(getIndex());
  }
}


文章来源: Automatic row numbering in javafx table