Javafx表视图中的数据类型转换问题

时间:2018-11-22 13:06:37

标签: javafx javafx-8 javafx-tableview

我正在使用Javafx表视图显示数据,并且它也是可编辑的表。

通过Map将数据加载到表格中,这就是我加载表格的方式

 ObservableList<Map> configData = FXCollections.observableArrayList();
    while(keys.hasNext()){
     Map<String, Object> dataRow = new LinkedHashMap<>();
     dataRow.put(Column1MapKey, key);
     dataRow.put(Column2MapKey, "somevalue";
    }
displayTable.setItems(configData);

在这里,这些值是组合数据类型的示例,一些值是String,Number,Boolean。

我的表是可编辑的,在我将数据值更改为String之后。

例如,第一行,第一列是表加载时的数字。

在编辑示例后输入55,它将转换为字符串“ 55”。我可以理解,下面是使用StringCoverter进行表编辑的代码,因此可以转换这些值。是否可以在不更改数据类型的情况下获取数据。假设编辑值永远不会更改数据类型示例(如果它是数字),那么编辑数据也将是数字。

Callback<TableColumn<Map, Object>, TableCell<Map, Object>> cellFactoryForMap = (TableColumn<Map, Object> p) -> 
            new TextFieldTableCell(new StringConverter() {
                @Override
                    public String toString(Object t) {
                    return t.toString();
                }
                @Override
                public Object fromString(String string) {
                    return string;
                }
        });



secondNameCol.setOnEditCommit(
                    new EventHandler<CellEditEvent<Map, Object>>() {
                        @Override
                        public void handle(CellEditEvent<Map, Object> t) {
                            t.getTableView().getItems().get(t.getTablePosition().getRow()).put(Column2MapKey, t.getNewValue());
                        }
                    }
                );

        secondNameCol.setCellFactory(cellFactoryForMap);

0 个答案:

没有答案