JavaFX的:打开从另一个Java类新FXML(Javafx: Open a new FXML f

2019-10-23 07:10发布

我有以下文件JavaFX应用程序:

  1. MainApp.java - Java类负责处理应用程序
  2. Controller.java - 相应的控制器文件
  3. Design.fxml - 其经由MainApp.java加载和Controller.java控制为应用程序FXML文件

现在,让我们说我有另一个类文件Compute.java其中有一个方法(比如DoSomething的())。 当此方法终止,我想打开一个内置的警告框或原始文件FXML(比如,它规定一箱“工作已完成”)的顶部自定义FXML文件。

请提出这个纯溶液(不涉及Compute.java的逻辑移动到任何其他文件或Controller.java。另外,我希望保持Compute.java干净的JavaFX代码)。

Answer 1:

建议:

由于在MainApp保持在主初级阶段(和场景),
你可能会注入这个类转换计算

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


文章来源: Javafx: Open a new FXML from another Java Class