带控制器的JavaFX静态/非静态

时间:2015-06-14 09:16:26

标签: java javafx

我尝试用JavaFX制作一个小数学程序,我在Controller 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();
}

它打开一个带有场景的新舞台,其中包含一个计算。 在showCalc的Controller中,我有set variables方法。

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;
}

我需要让它静止,因为我无法做一个控制器的对象,并且使用import我得到静态/非静态错误,但现在我想在同一个场景中更改TextArea的Text setVariables,所以我可以显示计算,我不能让TextArea静态,然后它崩溃,我也无法访问它而没有静态,而创建自身的对象也不是解决方案,所以如何解决此?

1 个答案:

答案 0 :(得分:2)

不要在控制器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);
// ...

并从控制器类中的static方法声明中删除setVariables