示例:
1. 添加一个按钮
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.BorderPane;
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
try {
BorderPane root = new BorderPane();//root根容器
Button btn = new Button("登录"); //添加按钮
root.setCenter(btn);
Scene scene = new Scene(root,400,400);
scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}
运行结果:
2. 添加事件处理器类 MyEventHandler
当用户点击按钮时,做相应的处理……
步骤:
1. 写一个处理器类,实现EventHandler 接口
2. setoOnAction (new MyEventHandler());
注: 在JavaFX里,各种事件的处理都是setonXXX
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.BorderPane;
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
try {
BorderPane root = new BorderPane();//root根容器
Button btn = new Button("登录");
root.setCenter(btn);
MyEventHandler handler = new MyEventHandler();
btn.setOnAction(handler);
Scene scene = new Scene(root,400,400);
scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
//Alt + /
private class MyEventHandler implements EventHandler<ActionEvent>{
@Override
public void handle(ActionEvent arg0) {
System.out.println("登录成功");
}
}
public static void main(String[] args) {
launch(args);
}
}
注:
·| EventHandler 是一个接口 (泛型接口,带类型参数)
·| 导包的时候要 import javafx.* 开头得的包
3. 设置处理器
MyEventHandle handle = new MyEventHandle();
btn.setOnAction( handle );
可直接写成一行:
btn.setOnAction(new MyEventHandler());
4.使用匿名类
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
// TODO 自动生成的方法存根
System.out.println("登录成功");
}
});
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.BorderPane;
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
try {
BorderPane root = new BorderPane();
//
// Label label = new Label("welcome!");
// root.setCenter(label);
Button btn = new Button("登录");
root.setCenter(btn);
// MyEventHandler handler = new MyEventHandler();
// btn.setOnAction(handler);
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
// TODO 自动生成的方法存根
System.out.println("登录成功");
}
});
Scene scene = new Scene(root,200,200);
scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}