我尝试用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静态,然后它崩溃,我也无法访问它而没有静态,而创建自身的对象也不是解决方案,所以如何解决此?
答案 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
。