是否可以在不是控制器类的java代码中编辑/访问javaFX元素(如Buttons,Labels等)?
我已经在java中编写了一个完整的程序,并希望在javaFX(使用Scene Builder)中为它创建一个GUI。由于整个代码ALREADY是用FXML控制器类之外的Java类编写的,因此可以访问像"标签"等元素。在我已写的课程里面?
我想要做的就是在FXML控制器类之外使用此代码: label1.setText("东西&#34);
因此它在GUI上更新。
如果没有,在FXML控制器类中实现我的java代码是一个非常耗时的过程。
答案 0 :(得分:0)
所以我认为您的解决方案取决于您在与FX GUI连接时需要多少信息。如果您可以直接向控制器提供数据,那么我建议您只需将数据对象传递给控制器的构造函数并在本地存储对它的引用。然后,您可以使用数据对象中的任何getter / setter来填充GUI,或更新模型。
public class Controller {
private Object dataObject;
public Controller(Object dataObject) {
this.dataObject = dataObject;
}
}
但是,如果您想保护数据并阻止GUI直接修改或与之交互,则需要使用保护信息的包装器。
public class Wrapper {
private Object dataObject;
public Controller(Object dataObject) {
this.dataObject = dataObject;
}
// allowable function call
public Object functionOne() {
return dataObject.functionOne();
}
}
您只需要在GUI中直接需要的包装器中实现函数,从而防止调用您认为应该限制在GUI中的数据对象。
然后您的控制器变为:
public class Controller {
private Wrapper dataObject;
public Controller(Wrapper dataObject) {
this.dataObject = dataObject;
}
}