我在Java和C#等OOP语言方面经验丰富。直到现在,从来没有与FX搞混,开始在办公室里忙于处理无聊事件。JavaFX事件处理之谜 - 代码已被删除且事件仍处理?
我的FX应用程序全部编写在一个类中。我输入我想要的软件包,包括这两个:
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
我实现了事件处理程序接口与我的主类声明,像这样类型的ActionEvent ..
public class Main extends Application implements EventHandler<ActionEvent>
我在写一个匿名内部类按钮对象来处理click事件,像这样..
btnButton.setOnAction(new EventHandler<ActionEvent>(){
public void handle(ActionEvent event) {
System.out.println("I got clicked");
}
});
显然,它的工作就像它应该但后来我跑了一个实验。我从上面删除了两个进口。我删除了Main类声明的“implements”部分。这使我的应用程序没有任何事件处理的参考。然后我又回到了我的按钮对象并写下了事件处理程序,像这样一个lambda表达式...
btnButton.setOnAction(e -> System.out.println("I got touched"));
你猜怎么着?它仍然工作!这是不可能的..有人可以解释如何删除处理事件所需的代码后仍然工作?这有点有趣,它让我心生疑虑。
在此先感谢您的回复!
-KeplerIO
据我了解,从[这里](https://docs.oracle.com/javase/tutorial/java/javaOO/ lambdaexpressions.html),lambda表达式已经是默认的Java 8库的一部分,并且完全理解如何自动处理多个构造。这包括按钮操作。 – Sedrick