Javafx:从另一个Java类打开一个新的FXML

时间:2015-06-08 10:38:45

标签: java javafx-2 fxml

我有一个带有以下文件的JavaFx应用程序:

  1. MainApp.java - 负责处理应用程序的Java类
  2. Controller.java - 对应的控制器文件
  3. Design.fxml - 通过MainApp.java加载并由Controller.java控制的应用程序的FXML文件
  4. 现在,假设我有另一个类文件Compute.java,它有一个方法(比如doSomething())。当此方法终止时,我希望在原始FXML文件(例如,表示“已完成工作”的框)上打开内置警报框或自定义FXML文件。

    请为此建议一个简洁的解决方案(不涉及将Compute.java的逻辑移动到任何其他文件或Controller.java。另外,我希望保持Compute.java清除JavaFx代码。)< / p>

1 个答案:

答案 0 :(得分:0)

建议:

由于主要初级阶段(和场景)在MainApp中持有,
你可以将这个课程注入Compute

// in MainApp.java
Compute compute = new Compute();
compute.setMainApp(this);

之后你打电话

// in Compute.java
mainApp.showAlert(myTitle, myContent);

,其中

// in MainApp.java
public void showAlert(String myTitle, Node myContent) {
    Alert alert = new Alert(AlertType.INFORMATION);
    alert.setTitle(myTitle);
    alert.setHeaderText(null);
    alert.getDialogPane.setContent(myContent);
    alert.showAndWait();
}

// or your custom stage
public void showAlert(String myTitle, Node myContent) {
    Stage dialogStage = new Stage();
    dialogStage.initModality(Modality.WINDOW_MODAL);
    dialogStage.setScene(new Scene(new VBox(new Label(myTitle), myContent));
    dialogStage.show();
}