Javafx为不同类型重用相同的cellfactory

时间:2014-01-28 17:12:44

标签: java javafx

我在TableView中有两列,一列包含整数,另一列包含字符串。

colId.setCellValueFactory(new PropertyValueFactory<MyCellData, String>("id"));
colName.setCellValueFactory(new PropertyValueFactory<MyCellData, String>("name"));

MyCellData类保存行的信息

public static class MyCell extends TableCell<MyCellData, Object> {

    public MyCell() {
        super();
    }

    @Override
    protected void updateItem(Object item, boolean empty) {
        if (item != null) {
            setText((String) item);
        }
    }

}

上面的MyCell类是一个基本的cellfactory。是否可以将它用于两个列,如第一段代码所示,尽管一个用于整数而另一个用于字符串?

1 个答案:

答案 0 :(得分:0)

我找到了一个似乎很有效的解决方案。

我改变了

public static class MyCell extends TableCell<MyCellData, Object> {

public static class MyCell<E> extends TableCell<MyCellData, E> {

所以我可以像这样创建一个新的CellFactory

Callback<TableColumn<MyCellData, Integer>, TableCell<MyCellData, Integer>> c2 = new Callback<TableColumn<MyCellData, Integer>, TableCell<MyCellData, Integer>>() {
            @Override
            public TableCell<MyCellData, Integer> call(TableColumn<MyCellData, Integer> param) {
                return new MyCell<Integer>();
            }
        };

将包含字符串的列的整数更改为字符串!