javafxに1つの選択ボックスがあり、3つのアイテムが含まれています。このアイテムの選択の変更など、特定のタスクを実行したいので、このイベントをどのように処理できますか?
final ChoiceBox cmbx=new ChoiceBox();
try {
while(rs.next())
{
cmbx.getItems().add(rs.getString(2));
}
}
catch (SQLException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
データベースからchoiceboxにアイテムを追加しています... javafxでchoiceboxのイベントを処理する方法を知りたいです
ChangeListenerをChoiceBoxのselectionmodelとselectedIndexPropertyに追加します。
final ChoiceBox<String> box = new ChoiceBox<String>();
box.getItems().add("1");
box.getItems().add("2");
box.getItems().add("3");
box.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> observableValue, Number number, Number number2) {
System.out.println(box.getItems().get((Integer) number2));
}
});
ただし、セバスチャンは十分に説明しました。選択ボックスで選択された実際の値のみに関心があり、インデックスをあまり気にしない場合は、selectedIndexPropertyの代わりにselectedItemPropertyを使用できます。
また、ChangeListenerは関数型インターフェースであり、Java 8.を使用すると、ここでラムダを使用できます。Sebastianの例を少し変更しました。newValueは新しく選択された値です。
ChoiceBox<String> box = new ChoiceBox<String>();
box.getItems().add("1");
box.getItems().add("2");
box.getItems().add("3");
box.getSelectionModel()
.selectedItemProperty()
.addListener( (ObservableValue<? extends String> observable, String oldValue, String newValue) -> System.out.println(newValue) );