JavaFX中两个控制器的交互

时间:2014-01-13 19:03:09

标签: binding controller javafx-2 model-binding javafx-8

美好的一天!我想问一下这些特殊情况是如何在JAVAFX中完成的。

我在这里指出了一个布局(link to layout question)

我的问题是,因为键盘布局是keyBoardLayout来自不同的具有不同Controller类的FXML,并且mainLayout具有不同的FXML和它自己的控制器类mainLayout,你如何编码这样的当我按下'A'键时,它会显示在mainLayout中的文本字段中?它与绑定有关吗?如果是这样,怎么样?请?

1 个答案:

答案 0 :(得分:1)

请记住,JavaFX和FXML遵循MVC原则。

一个简单的(虽然可能不是最优的)解决方案看起来像这样:

public class Main extends Application {

  @Override
  public void start(Stage stage) throws Exception {
    FXMLLoader layout1Loader = new FXMLLoader(getClass().getResource("layout1.fxml"));
    FXMLLoader layout2loader = new FXMLLoader(getClass().getResource("layout2.fxml"));

    Node layout1 = (Node) layout1Loader.load();
    Node layout2 = (Node) layout2loader.load();

    final Layout1Controller l1Controller = layout1Loader.getController();
    final Layout2Controller l2Controller = layout2loader.getController();

    l2Controller.but2.setOnAction(new EventHandler<ActionEvent>() {
      @Override
      public void handle(ActionEvent actionEvent) {
        l1Controller.toggleStatus(actionEvent);
      }
    });


    Parent root = (Parent) layout1;
    Scene scene = new Scene(root);

    stage.setScene(scene);
    stage.show();
  }
...
}