如何在 Java 中使用 lambda 實現 JavaFX 事件處理?\n
JavaFX Button 類提供了 setOnAction() 方法,可用於為按鈕單擊事件設定操作。EventHandler 是一個函式介面,僅有一個方法,即 handle() 方法。
語法
@FunctionalInterface public interface EventHandler<T extends Event> extends EventListener
在以下示例中,我們可以使用 lambda 表示式實現 JavaFX 的事件處理。
例項
import javafx.application.*; import javafx.beans.property.*; import javafx.event.*; import javafx.scene.*; import javafx.scene.control.*; import javafx.scene.layout.*; import javafx.stage.*; public class LambdaWithJavaFxTest extends Application { public static void main(String[] args) { Application.launch(args); } @Override public void start(Stage stage) throws Exception { BorderPane root = new BorderPane(); ToggleButton button = new ToggleButton("Click"); final StringProperty btnText = button.textProperty(); button.setOnAction((event) -> { // lambda expression ToggleButton source = (ToggleButton) event.getSource(); if(source.isSelected()) { btnText.set("Clicked!"); } else { btnText.set("Click!"); } }); root.setCenter(button); Scene scene = new Scene(root); stage.setScene(scene); stage.setWidth(300); stage.setHeight(250); stage.show(); } }
輸出
廣告