如何在 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();
   }
}

輸出





更新時間: 13-Jul-2020

4K+ 瀏覽量

開啟你的 職業生涯

完成課程以獲得認證

開始學習
廣告