JavaFX - 我不明白如何使我的TableView可编辑

时间:2016-05-11 14:13:41

标签: java javafx javafx-8

我正在创建一个Java计算器(JavaFX),当用户在TableView中确认编辑时,它应该能够重新计算像Protein,Carbohydrates和Fat(所有TableView表列)这样的食物元素。

我不知道如何让我的表格单元格可编辑。我根本不理解文档。

这就是我创建列的方式。我已经读过我应该将setCellValueFactory更改为SetCellFactory,但我不知道为什么或应该将哪些内容作为参数传递给该函数。那么我在哪里将食品领域分配到表中呢?

TableColumn<Food, Float> tableFoodFat = new TableColumn<>("Fat");
tableFoodFat.setCellValueFactory(new PropertyValueFactory<>("fat"));
tableFoodFat.setMinWidth(100);

我真的很困惑。这里的任何人都可以用简单的语言帮我解决问题吗?我可以自己编写代码,我只需要了解我应该改变它的原因和原因。

编辑:这适用于包含字符串数据的列 - tableFoodTitle.setCellFactory(TextFieldTableCell.<Food>forTableColumn());但是当我尝试在具有Float数据的列上使用此概念时会抛出错误。

1 个答案:

答案 0 :(得分:0)

试试这个!!它让你的表格单元格可编辑!

tableFoodFat.setCellFactory(TextFieldTableCell.forTableColumn(new FloatStringConvert‌​er));
tableFoodFat.setOnEditCommit(new EventHandler<CellEditEvent<Food, Float>>() {
            @Override
            public void handle(CellEditEvent<Food, Float> t) {
                ((Food) t.getTableView().getItems().get(t.getTablePosition().getRow())).setFOODFAT(t.getNewValue());
            }
        });

只需在这里注意setFOODFAT

希望它可以提供帮助!