【问题标题】:How can I check if an edit cell in javafx tableview is correct, and if it isn't: how can I set the cell value back?如何检查 javafx tableview 中的编辑单元格是否正确,如果不正确:如何设置单元格值?
【发布时间】:2019-02-14 10:30:44
【问题描述】:

我在 JavaFX 中使用TableView 制作了一个可编辑的表格。现在我想检查输入是否正确。如果错了,我想将单元格的值重置为旧值。 就像我将单元格中的“55”编辑为“160”。我希望在按 Enter 后,“160”消失。我是这样设计的:

public void handle(CellEditEvent event) {
    if (groups_list.get(table_persona.getSelectionModel().getSelectedIndex()).getAge() > 100) {
        Number a = (Number) event.getNewValue();
        ((Persona) event.getTableView().getItems().get(
            event.getTablePosition().getRow()
        )).setAge(a.intValue());
    } else {
        Number a = groups_list.get(table_persona.getSelectionModel().getSelectedIndex()).getAge();
        ((Persona) event.getTableView().getItems().get(
            event.getTablePosition().getRow()
        )).setAge(a.intValue());
        error_message_group.textProperty().set("to old");
    }
    table_groups.setItems(persona_list);
}

但它不起作用。 “160”还在。只有当我再次单击单元格时,“55”才会重新出现。

【问题讨论】:

标签: java user-interface javafx


【解决方案1】:

答案是方法refresh():

    public void handle(CellEditEvent event) {
        if (groups_list.get(table_persona.getSelectionModel().getSelectedIndex()).getAge() > 100) {
            Number a = (Number) event.getNewValue();
            ((Persona) event.getTableView().getItems().get(
                event.getTablePosition().getRow()
            )).setAge(a.intValue());
        } else {
       error_message_group.textProperty().set("to old");
       table_group.refresh();
        }
    }

【讨论】:

  • 不 - 很可能不是:如果刷新似乎是您的设置错误的答案......概率非常接近 1
  • 好吧..我错了:这是刷新可以解决错误的罕见极端情况之一:bugs.openjdk.java.net/browse/JDK-8187314
猜你喜欢
  • 2018-12-27
  • 2013-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-24
  • 2014-02-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多