W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
點擊按鈕通常會觸發(fā)事件。例如,點擊我們打印對話框上的打印按鈕以將文檔打印到打印機。UI庫使用事件來通知已發(fā)生的事情。
對于每個事件,都會有關(guān)于源和目標控件的信息。
JavaFX事件是javafx.event.Event類或其子類的一個實例。
JavaFX提供了幾個事件,包括
您可以通過擴展 Event
類來定義自己的事件。
下表列出了事件的屬性
屬性 | 描述 |
---|---|
type | 發(fā)生的事件類型。 例如,鼠標事件。 |
Source | 事件的起源。 |
Target | 事件分派鏈中的最后一個節(jié)點。 |
事件類型是EventType類的一個實例。例如,KeyEvent類包含以下事件類型:
JavaFX事件傳遞過程包含以下步驟:
我們可以使用setOnXXX方法來注冊事件處理程序,格式如下:
setOnEvent-type(EventHandler<? super event-class> value)
例如,
aButton.setOnAction(new EventHandler<ActionEvent>() { public void handle(ActionEvent event) { System.out.println("Hello World"); } });
事件類型
是處理程序處理的事件的類型,例如,鍵入類型事件的setOnKeyTyped或setOnMouseClicked用于鼠標點擊事件。
event-class
是定義事件類型的類,例如,與鍵盤輸入相關(guān)的事件的KeyEvent或與鼠標輸入相關(guān)的事件的MouseEvent。
以下代碼顯示如何處理鍵按下和釋放鍵時的鍵入事件:
setOnKeyTyped(EventHandler<? super KeyEvent> value)
下面的代碼顯示了如何處理按鈕點擊事件。setOnAction()方法用于注冊事件處理程序。當用戶單擊按鈕并打印時,將調(diào)用事件處理程序中的handle()方法“Hello World"到控制臺。
import javafx.application.Application; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.stage.Stage; /*from w ww . j a va2s . c o m*/ public class Main extends Application { public static void main(String[] args) { Application.launch(args); } @Override public void start(Stage primaryStage) { Group root = new Group(); Scene scene = new Scene(root, 300, 250); Button btn = new Button(); btn.setText("Hello World"); btn.setOnAction(new EventHandler<ActionEvent>() { public void handle(ActionEvent event) { System.out.println("Hello World"); } }); root.getChildren().add(btn); primaryStage.setScene(scene); primaryStage.show(); } }
上面的代碼生成以下結(jié)果。
setOnKeyPressed和setOnKeyReleased可以注冊鍵事件處理程序。
import javafx.application.Application; import javafx.event.EventHandler; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.control.TextField; import javafx.scene.input.KeyEvent; import javafx.stage.Stage; /*www . j a v a2s. c o m*/ public class Main extends Application { public static void main(String[] args) { Application.launch(args); } @Override public void start(Stage primaryStage) { Group root = new Group(); Scene scene = new Scene(root, 300, 250); TextField textBox = new TextField(); textBox.setPromptText("Write here"); textBox.setOnKeyPressed(new EventHandler<KeyEvent>() { public void handle(KeyEvent ke) { System.out.println("Key Pressed: " + ke.getText()); } }); textBox.setOnKeyReleased(new EventHandler<KeyEvent>() { public void handle(KeyEvent ke) { System.out.println("Key Released: " + ke.getText()); } }); root.getChildren().add(textBox); primaryStage.setScene(scene); primaryStage.show(); } }
上面的代碼生成以下結(jié)果。
我們可以使用setOnMouseEntered,setOnMouseExited,和setOnMousePressed注冊鼠標事件處理程序。
import javafx.application.Application; import javafx.event.EventHandler; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.input.MouseEvent; import javafx.stage.Stage; /*from w w w .jav a 2 s. co m*/ public class Main extends Application { public static void main(String[] args) { Application.launch(args); } @Override public void start(Stage primaryStage) { Group root = new Group(); Scene scene = new Scene(root, 300, 250); Button btn = new Button(); btn.setText("Hello World"); btn.setOnMouseEntered(new EventHandler<MouseEvent>() { public void handle(MouseEvent me) { System.out.println("Mouse entered"); } }); btn.setOnMouseExited(new EventHandler<MouseEvent>() { public void handle(MouseEvent me) { System.out.println("Mouse exited"); } }); btn.setOnMousePressed(new EventHandler<MouseEvent>() { public void handle(MouseEvent me) { System.out.println("Mouse pressed"); } }); root.getChildren().add(btn); primaryStage.setScene(scene); primaryStage.show(); } }
上面的代碼生成以下結(jié)果。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: