在JavaFx中编辑表

时间:2015-05-13 23:27:32

标签: java reflection javafx tableview tablecolumn

我在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);

目前,此代码会向区域列添加数字,并使区域和说明列可编辑。但是,在我在列中键入一个值并单击下一行后,我输入表中的值就会消失。我不知道为什么。在选择与我正在编辑的行不同的行后,我需要做什么才能使我的类型值在表中保持可见?提前谢谢!

2 个答案:

答案 0 :(得分:0)

  

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

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

您的解决方案是在单击下一行之前按Enter键。但当然,您无法向用户请求。

您可以找到解决方法here

如果您想要修改错误并对错误发表评论here's the issue

答案 1 :(得分:0)

没有足够的代码来确定您如何使用表格。

  1. 你可以tableColumn.setOnEditCommit(new CustomEventHandler)
  2. 你可以tableColumn.setCellFactory(TextFieldTableCell.forTableColumn(new StringConverter(){your logic});
  3. 当按下Enter时,那些仍然只提交单元格中的更改。因此,您仍然需要根据您考虑提交版本的事件来实现自己的实现。