我用以下方法加载一个FXML文件
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
上面的代码运行正常,现在我想访问寄存器的
在控制器类的构造函数中,但它给出了一个错误:线程“JavaFX应用程序线程”java中的异常。lang.NullPointerException。textFields
的默认值。fxml
注意:我已经为文本字段分配了一些默认值,这就是为什么我想访问它们。
下面是我的控制器类
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);
}
}
如有任何建议,将不胜感激。谢谢:)
FXMLLoader将开始加载并初始化loader中的FX组件。加载()。在那一刻,它已经需要控制器来处理事件。因此,如果创建控制器(构造函数),FXML将不可用。
只有在从FXML调用的事件方法中,才能访问GUI组件。或者向控制器添加一个单独的方法,如
public void init() { ... }
加载后调用。。。访问组件。
不需要。在FXMLLoader注入控件之前,必须创建控制器实例。在控制器中使用初始化方法而不是构造函数。
让你的控制器实现https://docs.oracle.com/javafx/2/api/javafx/fxml/Initializable.html .
或实施
class MyController {
@FXML
public void initialize(){
//Will be called by FXMLLoader
}
}
我一直不明白为什么我们能够从其他类调用一个类的构造函数。构造函数是一种方法,通常当试图从类中调用方法时,我们必须要么使该方法静态,这样我们就可以以 但是在构造函数的情况下,我们两者都不做。Java如何调用类的构造函数而不执行这些方法中的任何一个?我知道一个类的构造函数必须对你调用它的类可见,也就是说,如果你调用的类构造函数在不同的包中,你必须导入那个包。 那么,Java如何处理调用构造函数,而不必
我想在构造函数中访问多个位置的状态值。当我在构造函数中输入console.log(this)时,我可以看到可以访问特定的值,但是当我输入console.log this.state时,我没有定义。 这就是我想象的工作方式(我想访问CSSValue中的状态): 但是,当我运行此代码: 然后我在控制台中得到这个: 但是当我将console.logconsole.log(this.state)它打印未定
我有一个带有start方法的类,用于启动JavaFX的primaryStage。 但是,我有另一个名为change_screen(int n)的函数,它将根据传递给它的数字创建一个新场景,并为该新场景执行primarystage.setscene()和.show()。 如果我的方法是错误的,那么在同一个窗口中改变几个场景的正确方法是什么?
本文向大家介绍详解C++中如何将构造函数或析构函数的访问权限定为private,包括了详解C++中如何将构造函数或析构函数的访问权限定为private的使用技巧和注意事项,需要的朋友参考一下 今天面试被问到了这个单例模式常用到的技术手段,下面进行分析: 很多情况下要求当前的程序中只有一个object。例如一个程序只有一个和数据库的连接,只有一个鼠标的object。通常我们都将构造函
我正在创建一个程序,该程序获取用户的信息并输出最小值,最大值,平均值,总和,并计算其中有多少个值。我真的很难弄清楚如何创建100个项目的默认构造函数以及用户应该定义的数组大小。 > 创建新的数据集对象。创建对象的客户端指定可以添加到集中的最大项数。(编写一个具有一个 int 参数的构造函数。 还要编写一个默认构造函数,该构造函数创建一个能够处理100个项目的DataSet。 将整数数据项添加到数据
我创建了一个日历应用程序,可以添加注释。为了实现添加注释的功能,我创建了一些父组件,它有自己的状态,然后传递给子组件。子组件应该在构造函数中接受来自执行的。但是,由于setState函数异步ChildComponent没有时间等待父母组件的道具。 如何设置ChildComponent的初始状态,等待父母组件的道具(换句话说,同步)? 父组件: ChildComponent: