javafx - 分离 EventHandler 和 gui 代码
javafx - Separate EventHandler and gui code
所以我想知道如何在 class 中分离事件并将 GUI 代码放在另一个 class 中,而无需他们直接了解彼此。
我最近只在一个 class 工作,我一直在其中将 GUI 代码和侦听器放在启动方法中。
这是我目前所做的,但按钮不起作用:
图形界面 class:
package application;
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.BorderPane;
public class GUI extends Application {
Button btn1 = new Button("press me");
@Override
public void start(Stage primaryStage) {
try {
BorderPane root = new BorderPane();
Scene scene = new Scene(root,400,400);
root.setCenter(btn1);
primaryStage.setScene(scene);
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
}
控制器class:
package application;
import javafx.event.Event;
import javafx.event.EventHandler;
public class Control implements EventHandler<Event>{
GUI gui;
public Control(GUI gui) {
this.gui = gui;
}
@Override
public void handle(Event event) {
Object cmd = event.getSource();
if(gui.btn1.equals(cmd)){
System.out.println("your pressed btn1");
}
}
}
主要class:
package application;
public class Main extends GUI {
public static void main(String[] args) {
launch(args);
GUI gui = new GUI();
Control control = new Control(gui);
}
}
将控件 class 设置为按钮的事件处理程序..
button.setOnAction(new Control(this )) ;
所以我想知道如何在 class 中分离事件并将 GUI 代码放在另一个 class 中,而无需他们直接了解彼此。 我最近只在一个 class 工作,我一直在其中将 GUI 代码和侦听器放在启动方法中。
这是我目前所做的,但按钮不起作用:
图形界面 class:
package application;
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.BorderPane;
public class GUI extends Application {
Button btn1 = new Button("press me");
@Override
public void start(Stage primaryStage) {
try {
BorderPane root = new BorderPane();
Scene scene = new Scene(root,400,400);
root.setCenter(btn1);
primaryStage.setScene(scene);
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
}
控制器class:
package application;
import javafx.event.Event;
import javafx.event.EventHandler;
public class Control implements EventHandler<Event>{
GUI gui;
public Control(GUI gui) {
this.gui = gui;
}
@Override
public void handle(Event event) {
Object cmd = event.getSource();
if(gui.btn1.equals(cmd)){
System.out.println("your pressed btn1");
}
}
}
主要class:
package application;
public class Main extends GUI {
public static void main(String[] args) {
launch(args);
GUI gui = new GUI();
Control control = new Control(gui);
}
}
将控件 class 设置为按钮的事件处理程序..
button.setOnAction(new Control(this )) ;