簡體   English   中英

Javafx:從另一個Java類打開新的FXML

[英]Javafx: Open a new FXML from another Java Class

我有一個包含以下文件的JavaFx應用程序:

  1. MainApp.java-負責處理應用程序的Java類
  2. Controller.java-對應的控制器文件
  3. Design.fxml-通過MainApp.java加載並由Controller.java控制的應用程序的FXML文件

現在,假設我有另一個類文件Compute.java,它具有一個方法(例如doSomething())。 當該方法終止時,我希望在原始FXML文件的頂部打開一個內置的Alert框或一個自定義FXML文件(例如,狀態為“工作已完成”的框)。

請為此提出一個整潔的解決方案(這不涉及將Compute.java的邏輯移動到任何其他文件或Controller.java。此外,我希望保持Compute.java的JavaFx代碼清潔)。

建議:

由於主要的主要階段(和場景)在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();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM