事件源对象,即动作起源的地方。你需要创建一个能对一个按钮动作事件进行处理的对象。该对象称为一个事件处理器。
【按钮】(单击一个按钮触发一个动作事件)→【事件】(一个事件是一个对象)→【处理器】事件处理器处理对象
(事件源对象) (事件对象) (事件处理器对象)
不是所有的对象都可以成为一个动作事件的处理器。要成为一个动作事件的处理器,必须满足两个要求:
1)该对象必须是EventHandler<T extents Event>接口的一个示例。接口定义了所有处理器的共同行为。<T extends Event>表示T是一个Event子类型的泛型。
2)EventHandler<ActionEvent>接口包含了handle(ActionEvent)方法用于处理动作事件。你的处理器必须覆盖这个方法来响应事件。
HandlerEvent.java:
import javafx.application.Application; import javafx.geometry.Pos; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.layout.HBox; import javafx.stage.Stage; import javafx.event.ActionEvent; import javafx.event.EventHandler; public class HandleEvent extends Application{ @Override public void start(Stage primaryStage){ HBox pane=new HBox(10); pane.setAlignment(Pos.CENTER); Button btOK=new Button("OK"); Button btCancel=new Button("Cancel"); OKHandlerClass handler1=new OKHandlerClass(); btOK.setOnAction(handler1); CancelHandlerClass handler2=new CancelHandlerClass(); btCancel.setOnAction(handler2); pane.getChildren().addAll(btOK,btCancel); Scene scene=new Scene(pane,200,200); primaryStage.setTitle("HandleEvent"); primaryStage.setScene(scene); primaryStage.show(); } public static void main(String[] args){ Application.launch(args); } } class OKHandlerClass implements EventHandler<ActionEvent>{ @Override public void handle(ActionEvent e){ System.out.println("OK button clicked"); } } class CancelHandlerClass implements EventHandler<ActionEvent>{ @Override public void handle(ActionEvent e){ System.out.println("Cancel button clicked"); } }
运行结果:
输出: OK button clicked//点击OK按钮 Cancel button clicked//点击Cancel按钮