我是JavaFX的新手。与Swing不同,JavaFX的组合框的action事件似乎在选择实际上发生更改时被触发。在Swing中,您可以在JComboBox上添加一个ActionListener,并且无论何时进行选择(通过单击组合框中的选项之一),它都会触发一个事件,而不管所选值是否实际更改。我们可以在JavaFX中实现相同的行为吗?下面的一些代码。我要选择的是“ Hello”并打印,然后再次选择“ Hello”并再次打印。
public class ComboBoxSelection extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
VBox layout = new VBox();
ComboBox<String> comboBox = new ComboBox<>();
comboBox.getItems().addAll("Hello", "World");
comboBox.setOnAction(event -> System.out.println("Selected " + comboBox.getValue()));
layout.getChildren().addAll(comboBox);
Scene scene = new Scene(layout);
primaryStage.setScene(scene);
primaryStage.show();
}
}
我在这里注意到一个线程:ComboBox SAME item selected action listener。这几乎给了我我想要的东西,除了在选择取消(按Esc)时也会触发。还有其他解决方案吗?预先感谢。