如何以编程方式初始化场景构建器中的属性

时间:2017-06-21 14:18:52

标签: fxml scenebuilder populate

一般情况下,我试图弄清楚如何以编程方式将属性传递给场景构建器,以便它们将包含在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的值仍为空白。任何建议将不胜感激。

0 个答案:

没有答案