Javafx 2 javafx choicebox事件
我有一个javafx中的choicebox包含3个项目,让A、B和C等更改此项目的选择我想执行某些任务,那么我如何处理此事件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
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">