javafx - 单独的 EventHandler 和 gui 代码

标签 java model-view-controller javafx implementation eventhandler

所以我想知道如何在一个类中分离事件并将 GUI 代码放在另一个类中,而无需他们直接了解彼此。 我最近只在一个类中工作,我将 GUI 代码和监听器放在 start 方法中。

这是我到目前为止所做的,但按钮不起作用:

GUI 类:

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


}

Controller 类:

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");
      }
   }

}

主类:

package application;

public class Main extends GUI {

public static void main(String[] args) {
    launch(args);

    GUI gui = new GUI();
    Control control = new Control(gui);
   }
}

最佳答案

将控件类设置为按钮的事件处理程序..

button.setOnAction(new Control(this )) ;

关于javafx - 单独的 EventHandler 和 gui 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35659399/

相关文章:

java - 主机名在 Lollipop 设备中不匹配,但在 Postman 和 marshmallow 设备中工作正常

java - E : Package 'oracle-java8-installer' has no installation candidate in Docker Ubuntu

java - 使用 JSoup 将 android 中的 href 值更改为本地值

php - 我的框架应该有多少目录分隔?

ruby-on-rails - rails : clean up messy controller methods

java - 在 borderpane 中心加载新的 fxml

java - 设置 Rest 端点的超时

c# - MVC 5 中的数据注释

JavaFX 和 Swing 性能问题

java - 监听ListView中ScrollBar的变化