我在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