2013-01-25 11 views
7

私はjavafxに1つのchoiceboxを持っています。このアイテムの選択の変更には、A BとCを含めましょう。特定のタスクを実行したいので、どうすればこのイベントを処理できますか?javafx choiceboxイベント

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に項目を追加するイム... は今、私はChoiceBoxのselectionModelのとselectedIndexPropertyにChangeListenerを追加JavaFXの

答えて

15

でchoiceboxのイベントを処理する方法を知りたい:

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)); 
     } 
    }); 
5

セバスチャンは説明しましたが、実際の値が選択ボックスで選択されていてインデックスにはあまり気にしない場合は、selectInの代わりにselectedItemPropertyを使用してくださいdexProperty。

また、ChangeListenerは機能的なインターフェイスなので、ここでラムダを使うことができます。私はちょっとしたことでセバスチャンの例を修正しました。 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)); 
関連する問題