簡體   English   中英

帶有控制器的 JavaFX 靜態/非靜態

[英]JavaFX static/non static with Controllers

我試圖用 JavaFX 制作一個小數學程序。 我在控制器 1 中有一個Button操作:

@FXML
public void showCalc(ActionEvent event2) {
    layout.parabel_nullstelle_showCalc.setVariables(a, b, c, x1, x2, ze1, ze2, ze3, ze4, ze5, ze6, ze7);
    Parent root3 = main.Main.getParent();
    Scene showCalc = new Scene(root3, 500, 1000);
    Stage paranullCalc = new Stage();
    paranullCalc.setTitle("Rechung");
    paranullCalc.setScene(showCalc);
    paranullCalc.show();
}

它會打開一個帶有Scene的新Stage ,其中包含一個計算。 showCalc的控制器中,我有設置變量方法。

public static void setVariables(double a1, double b1, double c1,double x11, double x22, double ze11, double ze22, double ze33, double ze44, double ze55, double ze66, double ze77){
    a = (float) a1;
    b = (float) b1;
    c = (float) c1;
    x1 = (float) x11;
    x2 = (float) x22;
    ze1 = (float) ze11;
    ze2 = (float) ze22;
    ze3 = (float) ze33;
    ze4 = (float) ze44;
    ze5 = (float) ze55;
    ze6 = (float) ze66;
    ze7 = (float) ze77;
}

我需要使它靜態,因為我不能做一個控制器的對象,並且通過導入我得到靜態/非靜態錯誤。 但是現在我想在與setVariables相同的Scene更改TextArea的文本,以便我可以顯示計算。 我無法將TextArea靜態,因為它會崩潰。 如果沒有靜態,我也無法訪問它,並且創建自己的對象也不是解決方案。 那么我該如何解決這個問題呢?

不要僅僅為了能夠從其他地方訪問它們而將控制器中的變量或方法設為static 在控制器中擁有static成員很少(如果有的話)有意義。

要訪問控制器中的方法,只需從FXMLLoader檢索控制器實例。 您還沒有真正發布足夠的代碼來提供完整的答案,但您需要執行以下操作:

FXMLLoader loader = new FXMLLoader(getClass().getResource("calc.fxml"));
Parent calcRoot = loader.load();
CalcController controller = loader.getController();
controller.setVariables(...);
Scene showCalc = new Scene(calcRoot, 500, 1000);
// ...

並從控制器類中的setVariables方法聲明中刪除static

暫無
暫無

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

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