javafx表中的自动行编号

时间:2012-11-19 07:59:18

标签: java swing javafx-2

我有一个示例代码,用于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();
            }
        }

1 个答案:

答案 0 :(得分:5)

在JavaFX中,您使用TableColumn与CellFactories和CellValueFactories填充TableView

JavaFX教程有article可能会帮助您入门。

在我使用的一种方法中,我将业务对象转换为显示为表示对象,并将所有必要的属性(如您的情况,数字)添加到它们。

编辑:在第二种更清洁的方法中,您可以将CellFactory设置为创建TableCell,在index中显示自己的TableCell#updateItem(S, boolean)属性:

public class NumberedCell extends TableCell{

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