我有一个按钮,我希望当我将鼠标悬停在按钮上时显示文本。
这两种方法都有效,但是可以互换使用吗?
// First
EventHandler<MouseEvent> eventHandler = new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent e) {
System.out.println("Hello World");
}
};
button.setOnMouseEntered(eventHandler);
// Second. Lambda expression.
button.setOnMouseEntered(e -> {
System.out.println("Hello ");
});
我不太明白第一个问题。我想EventHandler<MouseEvent>
是类型和 eventHandler
是对象的名称。正确的?
最佳答案
是的,它们都会执行相同的代码。
第一个是所谓的匿名类。这意味着您可以直接重写继承接口(interface)的方法(在本例中为句柄),而不必使用其他类/接口(interface)来执行此操作。
然后将处理程序实例传递给 setOnMouseEntered 方法。
lambda 表达式也可以执行此操作,但由于该方法需要特定的对象类型,因此您可以使用 lambda 表达式将其写得更短。
e 与 eventHandler 基本相同
关于java - JavaFX 中使用事件的这些方法是否相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58189107/