在JavaFx中编辑表

在JavaFx中编辑表,java,reflection,javafx,tableview,tablecolumn,Java,Reflection,Javafx,Tableview,Tablecolumn,我已经用JavaFx创建了一个表。我使用反射将数字1到100填充到表中。此表包含区域编号和说明。有100个区域。我希望表格是可编辑的。我使用了以下代码使单元格可编辑 zonesTable.setEditable(true); zone.setEditable(true); zone.setCellFactory(TextFieldTableCell.<Zones>forTableColumn()); description.setEditable(true); descriptio

我已经用JavaFx创建了一个表。我使用反射将数字1到100填充到表中。此表包含区域编号和说明。有100个区域。我希望表格是可编辑的。我使用了以下代码使单元格可编辑

zonesTable.setEditable(true);
zone.setEditable(true);
zone.setCellFactory(TextFieldTableCell.<Zones>forTableColumn());

description.setEditable(true);
description.setCellFactory(TextFieldTableCell.<Zones>forTableColumn());

    zone.setCellValueFactory(new PropertyValueFactory<Zones, String>("rZoneNumber"));
    description.setCellValueFactory(new PropertyValueFactory<Zones, String>("rDescription"));

    for(int i = 0; i < 100; i++){
        data.add(new Zones(i + "", "")); 
    }

    zonesTable.setItems(data);
zonesTable.setEditable(true);
zone.setEditable(true);
zone.setCellFactory(TextFieldTableCell.forTableColumn());
description.setEditable(true);
description.setCellFactory(TextFieldTableCell.forTableColumn());
zone.setCellValueFactory(新的PropertyValueFactory(“rZoneNumber”));
说明.setCellValueFactory(新属性ValueFactory(“rDescription”);
对于(int i=0;i<100;i++){
数据。添加(新分区(i+“”,“”);
}
可分区。设置项(数据);
目前,此代码将数字添加到“区域”列,并使“区域”和“描述”列可编辑。但是,在我向列中键入值并单击下一行后,我输入到表中的值将消失。我不知道为什么。在选择与正在编辑的行不同的行后,我需要做什么才能使键入的值在表中保持可见?提前谢谢

但是,在我在列中键入值并单击下一行之后, 我输入到表中的值消失了

它不起作用,因为JavaFX中有一个严重的、令人尴尬的错误,Oracle拒绝修复

您的解决方案是在单击下一行之前按enter键。当然,你不能要求你的用户这样做

你可以找到一个解决办法


如果您想更新修复程序并对错误进行注释,则。

没有足够的代码来确定如何使用该表

  • 您可以使用tableColumn.setOnEditCommit(新的CustomEventHandler)
  • 您可以使用tableColumn.setCellFactory(TextFieldTableCell.forTableColumn(新的StringConverter(){your logic})

  • 当输入被按下时,这些文件仍然只提交单元格中的更改。因此,您仍然需要根据您认为提交的版本的事件来实现自己的实现。

    请张贴模型类,<代码>区域< /代码>。