【问题标题】:Using ChangeListener for JavaFX ChoiceBox working with the String使用 ChangeListener for JavaFX ChoiceBox 处理字符串
【发布时间】:2015-03-06 09:24:54
【问题描述】:

当使用添加到 ChoiceBox 的 ChangeListener 时,有没有办法直接访问 observableArrayList 中的项目,例如更新字符串类型的实例变量?

我在这里实现了这段代码,它可以让我使用 observableArrayList 的索引值正常工作。但是,我对 Java 很陌生,所以我只是想知道这是否是要走的路?或者,如果有更好的方法来使用 ChangeListener 更新 String Instance 变量。

cb_1.setItems(FXCollections.observableArrayList("High", "Average ", "Low"));
cb_1.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener<Number>() {

    @Override
    public void changed(ObservableValue<? extends Number> observable,
        Number oldVal, Number newVal) {

        System.out.println(observable.getValue());              
    }
});

【问题讨论】:

  • 那么 Observablelist 将自动更新任何由它支持的节点,无需开发人员的努力,是的,这是对我的英特尔执行此操作的最佳方式,所以是的,去吧
  • 感谢 Elltz 的权威!

标签: java string javafx java-8 changelistener


【解决方案1】:

我遇到了同样的问题。我通过创建一个实现 ChangeListener 的类来解决,但在类构造函数中设置了一个 ChoiceBox 最终字段

private class MyChangeListener implements ChangeListener<Number>{
    final ChoiceBox<Number> cb;

    MyChangeListener(ChoiceBox<Number> cb) {
        this.cb = cb;
     }

    @Override
    public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
        System.out.println("cb: "+cb.getId());
    }

}

我稍后在代码中使用它,例如

@FXML   ChoiceBox boxValidPwd;
[..]
boxValidPwd.setItems(FXCollections.observableArrayList(1,2,3,4,5,6));
boxValidPwd.getSelectionModel().selectedIndexProperty().addListener(new MyChangeListener(boxValidPwd));

您应该在输出中看到使用的选择框 ID。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-24
    • 1970-01-01
    • 1970-01-01
    • 2020-10-18
    • 2017-05-10
    • 2015-02-11
    相关资源
    最近更新 更多