一般情况下,我试图弄清楚如何以编程方式将属性传递给场景构建器,以便它们将包含在FXML文件中(在我的情况下由Netbeans创建)。更具体地说,我想设置文本变量的text属性。两个明显的常规应用是
程序检索记录,使用场景构建器显示记录,用户进行更改并按下更新按钮,程序使用结果更新数据记录。
程序从FXML屏幕接收输入,验证它们,通知用户任何错误,并重新显示用户输入的数据(毕竟,只有一个虐待狂程序员会让用户重新输入所有内容)。
我正在使用标准的MVC(模型,视图,控制器)方法,或者我喜欢称之为加载和处理的方法。 Jose Pereda回答“如何通过java文件中的setText更新fxml文件中的文本字段?”好像让我走了一半。解释何塞:
public class myController implements Initializable {
@FXML private TextField myVar
@Override
public void initialize(URL url, ResourceBundle rb) {
myVar.setText("This is my hard coded Text");
}
public void setMyVar(String text) {
// set text from another class
System.out.println("scene builder should show: "+text);
myVar.setText(text);
}
}
第一个解决方案,即带有硬编码文本的解决方案,工作正常;但显然这并没有解决原来的问题。
我猜测要使第二个通用解决方案工作,我必须调用一个方法:
myController.setMyVar("whatever");
但如果这是正确的,我会在哪里放置代码?如果我将它放在加载FXML屏幕的类中,
System.out.println("scene builder should show: "+text);
命令正确执行,但结果屏幕中myVar的值仍为空白。任何建议将不胜感激。