我加载一个FXML文件中的下列方式如何访问JavaFX组件在控制器的构造函数
FXMLLoader loader = new FXMLLoader(getClass().getResource("register.fxml"));
Controller c = new Controller("Welcome to EAST");
loader.setController(c);
Scene scene = new Scene(loader.load());
fx.setScene(scene); // fx is a JFXPanel which is used to integrate FX in Swing
上面的代码工作正常,现在我要访问的textFields
的默认值register.fxml
在Controller类的构造函数中,但它给出了以下错误:线程“JavaFX Application Thread”中的异常java.lang.NullPointerException。
注意:我已经给textFields分配了一些默认值,这就是我想要访问它们的原因。
以下是我的控制器类
Controller.java
public class Controller {
@FXML
private TextField username;
@FXML
private PasswordField pass;
@FXML
private TextField ip;
@FXML
private TextField sPort;
@FXML
private TextField fPort;
public Controller(String str) {
System.out.println(str);
System.out.println(ip.getText()); // this line gives the NullPointerException Error
}
@FXML
private void login() {
}
@FXML
private void register(){
}
@FXML
private void cancel(){
System.exit(0);
}
}
任何建议,将不胜感激。谢谢:)
的'初始化()'(不'的init()')方法被调用自动成为FXMLLoader一旦创建并注入所有的'@ FXML'注解领域。 –
Thanx的提示! –