从FXML获取对象时,JavaFX返回null

时间:2017-07-06 09:04:31

标签: java javafx javafx-2

好的,所以我制作了布局,我正在尝试获取2个标签,进度条和2个textField。

我得到这样的话:

@FXML private TextField instDir;
@FXML private TextField jsonDir;
@FXML private ProgressBar progressBar;
@FXML private Label pText;
@FXML private Label error;

但只有非null的是instDir和jsonDir。 我的FXML文件:https://hastebin.com/cohuhidobi.xml 我正在使用对象的Java类的部分:

void setProgressBar(float i, float max) {
    if(progressBar != null) {
        progressBar.setProgress(i / max);
    }else{
        System.out.println("progressBar is null");
    }
    if(pText != null) {
        pText.setText((int) i + "/" + (int) max);
    }else{
        System.out.println("pText is null");
    }
    System.out.println((int) i + "/" + (int) max);
    //text = (int)i+"/"+(int)max;
}

总是将它们都返回为null。

我想要的所有对象都在控制器中注册

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

检查您的控制器是否实现了Initializable并具有以下结构:

public class FXMLController implements Initializable {

    @FXML private TextField instDir;
    @FXML private TextField jsonDir;
    @FXML private ProgressBar progressBar;
    @FXML private Label pText;
    @FXML private Label error;

    /**
     * Initializes the controller class.
     */
    @Override
    public void initialize(URL url, ResourceBundle rb) {
        // ...
    }

    //Getters and setters
}