Здравствуйте, у меня проблема с обработкой действия моей кнопки: вот мой код:
public class HelloWorld extends Application {
Button btn;
@Override
public void start(Stage primaryStage) {
btn = new Button();
btn.setText("Say 'Hello World'");
StackPane root = new StackPane();
root.getChildren().add(btn);
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("Hello World!");
primaryStage.setScene(scene);
primaryStage.show();
}
public void setButtonOnAction(EventHandler<ActionEvent> acn)
{
btn.setOnAction(acn);
}
}
мой класс контроллера
public class Controller {
private HelloWorld helloWorld;
private Model model;
public Controller(HelloWorld helloWorld, Model model) throws Exception {
this.helloWorld = helloWorld;
this.model = model;
System.out.println(this.mainView.returnOne());
this.helloWorld.setButtonOnAction(e->
{
System.out.println("CATCH");
});
}
}
main runClass:
public class runExample {
public static void main(String[] args) throws Exception {
HelloWorld helloWorld = new HelloWorld();
Model model = new Model();
Application.launch(helloWorld.getClass(),args);
Controller controller = new Controller(helloWorld, model);
}
}
`
Кто-нибудь знает, почему setButtonOnAction не работает в классе контроллера, а в классе HelloWorld работает отлично?Компилятор не дает мне никакой ошибки.Только если я переключаюсь в класс выполнения следующим образом:
Controller controller = new Controller(mainView, model);
Application.launch(mainView.getClass(),args);
это дает мне
Исключение в потоке "main" java.lang.NullPointerException
и если я использую setButtonOnAction в классе HelloWorld, он работает нормально.Можете ли вы помочь мне поймать событие в моем классе контроллера?Я использую jdk8, но на 11 он тоже не работает.