Javafx 2 javafx choicebox事件

Javafx 2 javafx choicebox事件,javafx-2,javafx,Javafx 2,Javafx,我有一个javafx中的choicebox包含3个项目,让A、B和C等更改此项目的选择我想执行某些任务,那么我如何处理此事件 final ChoiceBox cmbx=new ChoiceBox(); try { while(rs.next()) { cmbx.getItems().add(rs.getString(2)); } } catch (SQLException

我有一个javafx中的choicebox包含3个项目,让A、B和C等更改此项目的选择我想执行某些任务,那么我如何处理此事件

 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和SelectedIndex属性:

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));
      }
    });
final ChoiceBox=new ChoiceBox();
box.getItems()添加(“1”);
box.getItems()添加(“2”);
box.getItems()添加(“3”);
box.getSelectionModel().selectedIndexProperty().addListener(新的ChangeListener()){
@凌驾

public void changed(observevalueSebastian对此解释得很好,只是万一您只对选择框上选择的实际值感兴趣,而不太关心索引,那么您可以使用selectedItemProperty而不是selectedIndexProperty

同样,ChangeListener是函数接口,当您使用java 8时,您可以在这里使用lambda。我只是稍微修改了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) );
ChoiceBox-box=新的ChoiceBox();
box.getItems()添加(“1”);
box.getItems()添加(“2”);
box.getItems()添加(“3”);
box.getSelectionModel()
.selectedItemProperty()

.addListener((observeValue我知道这是一个老问题,但更简单的方法是使用:

ChoiceBox=。。。;
框。设置操作(事件->{
System.out.println(box.getValue());
});
或在FXML中:

<ChoiceBox fx:id="id" onAction="#controllerMethod">


这对我在jdk 13上不起作用。
无法解析addListener()方法。
是的,它可能不再有效,因为该解决方案是在JDK8中包含JavaFX时提供的。JavaFX现在是一个独立的项目()并从JDK版本中删除,因此API可能会更改,不再支持lambda表达式。就个人而言,如果lambda不再受支持,我感到很难过
<ChoiceBox fx:id="id" onAction="#controllerMethod">