当多个fxml文件具有相同的控制器类时,如何知道哪个fxml文件称为控制器类?
我有一个初始化类,其中我想从数据库中的数据自动完成两个文本字段。由于控制器类相同,因此在运行程序时会引发错误。因此,获取有关哪个fxml页面称为控制器类的详细信息将有所帮助。
答案 0 :(得分:0)
您不应为不同的FXML文件使用相同的控制器类,因为这样一来您就无需处理此类问题。但是,如果您坚持要在加载FXML之前手动调用FXMLLoader.setController(还需要删除FXML内部对控制器的引用),则可以知道将哪个控制器实例分配给了哪个FXML
答案 1 :(得分:0)
假设您通过传递body
而不是URL
来指定要加载的fxml,则只需添加一个InputStream
字段,即可将URL location
插入值。 FXMLLoader
自动将fxml网址注入到此字段:
FXMLLoader
对于具有不同功能的多个fxml使用相同的控制器似乎是不好的做法。请仔细检查,如果使用其他控制器不是更清洁的解决方案。
注意::每次加载包含带有控制器类名称作为值的@FXML
private URL location;
@FXML
private void initialize() {
System.out.println(location);
}
属性的fxml时,都会 新实例 已创建控制器。