将 ChangeListener 用于处理字符串的 JavaFX ChoiceBox
Using ChangeListener for JavaFX ChoiceBox working with the String
当使用添加到 ChoiceBox 的 ChangeListener 时,有没有办法直接访问 observableArrayList 中的项目,例如更新 String 类型的实例变量?
我在这里实现了这段代码,这让我可以使用 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());
}
});
我遇到了同样的问题。我通过创建一个实现 ChangeListener 的 class 来解决,但是在 class 构造函数
中设置了一个 ChoiceBox final 字段
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));
您应该会在输出中看到所使用的 choiceBox ID。
当使用添加到 ChoiceBox 的 ChangeListener 时,有没有办法直接访问 observableArrayList 中的项目,例如更新 String 类型的实例变量?
我在这里实现了这段代码,这让我可以使用 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());
}
});
我遇到了同样的问题。我通过创建一个实现 ChangeListener 的 class 来解决,但是在 class 构造函数
中设置了一个 ChoiceBox final 字段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));
您应该会在输出中看到所使用的 choiceBox ID。