Javafx 对于类型选择框<;未定义方法setOnAction(<;no type>;action)>;{});字符串>;

Javafx 对于类型选择框<;未定义方法setOnAction(<;no type>;action)>;{});字符串>;,javafx,Javafx,每当我尝试启动Javafx应用程序时,都会出现以下错误: “类型ChoiceBox的方法setOnAction((action)->{})未定义” 我认为这可能是因为我的代码中缺少导入,然后尝试使用以下导入: 导入javafx.scene.control.* 导入javafx.scene.control.ChoiceBox java-我的终端结果中的版本: java版本“1.8.0_25” Java(TM)SE运行时环境(build 1.8.0_25-b17) Java HotSpot(TM)6

每当我尝试启动Javafx应用程序时,都会出现以下错误: “类型ChoiceBox的方法setOnAction((action)->{})未定义”

我认为这可能是因为我的代码中缺少导入,然后尝试使用以下导入:

导入javafx.scene.control.*

导入javafx.scene.control.ChoiceBox

java-我的终端结果中的版本:

java版本“1.8.0_25”

Java(TM)SE运行时环境(build 1.8.0_25-b17)

Java HotSpot(TM)64位服务器虚拟机(构建25.25-b02,混合模式)

我不确定导入中到底缺少了什么,这不允许我启动UI。请帮我解决这个问题。

Choicebox onAction()是在JDK 8u60中引入的。由于您的是8u25,因此无法访问此方法。如果您无法更新Java版本,那么我建议您使用ChangeListener来监听对Choicebox所做的更改,例如

     choiceBox.getItems().addAll("1","2","3","4");
     choiceBox.setValue("3");

     choiceBox.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener<Number>() {
            @Override
            public void changed(ObservableValue<? extends Number> observableValue, Number oldNumber, Number newNumber) {
               //if you want to get the new value changed
                System.out.println(choiceBox.getItems().get((Integer) newNumber));
              //or you can invoke a function to do something else when value is changed
            }
        });

choiceBox.getItems().addAll(“1”、“2”、“3”、“4”);
choiceBox.setValue(“3”);
choiceBox.getSelectionModel().selectedIndexProperty().addListener(新的ChangeListener()){
@凌驾

更改公众假期(ObservalEvalue可能意味着
ChoiceBox
没有
setOnAction
方法。是在版本8 update 60中添加的。它在以前的版本中不可用,就像您正在使用的版本一样。由于某些原因,我无法控制更新java版本,如果不是通过更新到版本8 update 60,我不能通过导入支持此功能?您可以尝试
choiceBox.addEventHandler(ActionEvent.ACTION,event->{})
。从未测试过,所以我不知道它是否有效,但快速测试可能没有什么坏处。这确实是一个旧的fx版本-即使对于fx8;)最好更新到当前版本(java/fx12),或至少更新到当前版本的8,如果由于某种原因您无法更新到最新版本。