【问题标题】:Java FX comboBox in tableView onEditCommit doesn't worktableView onEditCommit 中的 Java FX 组合框不起作用
【发布时间】:2014-04-29 15:12:35
【问题描述】:

您好,我们尝试在 tableView 中为我们的组合框使用事件处理程序。 但由于某种原因,事件处理程序不会启动。经过长时间的搜索,我们仍然没有找到答案,所以我们很绝望。 这是我们的代码:

//ComboBoxes in Tableview
   @FXML
    private TableColumn<Presentatie, Dag> dagC;
    dagC.setCellValueFactory(new PropertyValueFactory<Presentatie, Dag>("dag"));
    dagC.setEditable(true);
    dagC.setCellFactory(ComboBoxTableCell.<Presentatie, Dag>forTableColumn(dataD));

    EventHandler<TableColumn.CellEditEvent<Presentatie, Dag>> nameEditHandler = new EventHandler<TableColumn.CellEditEvent<Presentatie, Dag>>() {
        @Override
        public void handle(TableColumn.CellEditEvent<Presentatie, Dag> e) {
            Presentatie p = e.getRowValue();
            Dag newValue = e.getNewValue();
            p.setDag(newValue);
            System.out.println("PLEASE");

        }
    };
    dagC.setOnEditCommit(nameEditHandler);

而我们的 dataD 是一个 FXCollections.observableArrayList。

我们正在与场景构建器合作,这可能是问题吗?我们在某处读到场景构建器不会更新事件处理程序。如果是这样,我们需要做什么才能使这段代码正常工作? 请帮助我们将不胜感激。

【问题讨论】:

  • 看起来不错。组合框是否按预期显示?请注意,如果您的 Presentatie 类具有 public ObjectProperty&lt;Dag&gt; dagProperty() {...} 方法,那么您的 onEditCommit 处理程序是多余的:PropertyValueFactory 将负责从单元格的项目到属性的绑定。

标签: combobox event-handling javafx tablecolumn


【解决方案1】:

场景构建器不是问题。出于某种原因,显示值为null 的字符串会导致问题。一种解决方案是用空的"" 字符串替换null 值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-18
    • 2015-08-28
    • 1970-01-01
    • 1970-01-01
    • 2013-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多