JavaFX - 哪种事件侦听器方法更有效?

Ind*_*igo 2 java javafx

我刚开始在 JavaFX 中使用事件侦听器。为了同一目的,我偶然发现了两种方法。两者有什么优势吗?

 test1.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent event) {
                    System.out.print("PPT");
            }
        });
Run Code Online (Sandbox Code Playgroud)

    test1 .selectedProperty().addListener(new ChangeListener<Boolean>() {
        public void changed(ObservableValue<? extends Boolean> ov,
            Boolean old_val, Boolean new_val) {
            log("ggggggg");
        }
    });
Run Code Online (Sandbox Code Playgroud)

也是test1复选框的名称

jew*_*sea 5

两种方法之间的效率差异基本上可以忽略不计 - 只需选择最适合您的应用程序功能且最容易理解的方法即可。

  • 主要区别在于动作事件的侦听器只会通过用户对复选框的动作来通知。`selectedProperty()` 上的侦听器将在属性更改时收到通知。因此,如果您以编程方式调用`test1.setSelected(!test1.isSelected());`,则会通知`ChangeListener`,但不会通知`EventHandler`。 (4认同)