【问题标题】:Addlistener to "autocomplete" Combobox in JavaFX将侦听器添加到 JavaFX 中的“自动完成”组合框
【发布时间】:2020-06-10 04:57:42
【问题描述】:

我实现了一个可编辑的 ComboBox 并自动完成,类似于此答案中的一个: https://stackoverflow.com/a/27384068/9611276

现在我想添加一个监听器,当这个 Combobox 中的值发生变化时它会执行一些操作。像这样的:

combobox.getValueProperty().addListener((obs, oldV, newV) -> {...});

问题是,如果没有 java.lang.ClassCastException,我无法访问 combobox.getValueProperty()。在上面的answer 中提到使用以下函数获取组合框值:

    public static <T> TgetComboBoxValue(ComboBox<T> comboBox) {
    if (comboBox.getSelectionModel().getSelectedIndex() < 0) {
        return null;
    } else {
        return comboBox.getItems().get(comboBox.getSelectionModel().getSelectedIndex());
    }
}

如何创建和访问属性以添加监听器?

谢谢, BR

【问题讨论】:

  • 老实说,我尝试了该问题的“答案”,但有许多严重的错误无法继续。在我看来,我根据那里的一些其他答案提供了一个更好的解决方案,同时修复了它的一些错误。 stackoverflow.com/a/55709876/9278333 我在生产环境中使用它,它运行得非常好(即使有 10,000 多个可能的值)。升级后还有一条通往 Java 9+ 的道路。

标签: java javafx combobox javafx-8


【解决方案1】:

您可以将 propertyChangeListener 添加到该组合框

 comboBox.addPropertyChangeListener(evt -> {

 });

或者另外,您可以触发自己的属性更改事件。其中 2 是旧值,3 是组合框的新值。它也可以采用字符串、布尔值和其他原始类型。

 comboBox.firePropertyChange("samplePropertyChange", 2, 3);

【讨论】:

  • 你确定你在这里谈论的是JavaFX吗?
  • 我觉得他在 Swing 世界里
猜你喜欢
  • 2018-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-13
  • 2012-10-10
  • 1970-01-01
  • 1970-01-01
  • 2023-03-25
相关资源
最近更新 更多