为什么这两个代码给出不同的输出
why these two codes give different outputs
给定以下代码:
code1:
FXMLLoader loader = new FXMLLoader();
Parent root = (Parent) loader.load(getClass().getResource("Screen1.fxml"));
Screen1Controller controller = loader.getController();
if(controller == null)
System.out.println(" controller is null");
else System.out.println("controller is not null");
输出:
控制器为空
code2:
FXMLLoader loader = new FXMLLoader(getClass().getResource("Screen1.fxml"));
Parent root = (Parent)loader.load();
// FXMLLoader loader = new FXMLLoader();
// Parent root = (Parent) loader.load(getClass().getResource("Screen1.fxml"));
Screen1Controller controller = loader.getController();
if(controller == null)
System.out.println(" controller is null");
else System.out.println("controller is not null");
输出:
控制器不为空
我以为他们会给出相同的结果?不是吗?
排队
Parent root = (Parent) loader.load(getClass().getResource("Screen1.fxml"));
你打电话给getResource(URL)
。该方法是静态的,因此它不会更改 FXMLLoader
的任何实例(特别是不会在您的 loader
中创建控制器)。
也许您想调用 getResource(InputStream)
,它不是静态的。如果是这样,您应该将代码更改为:
Parent root = (Parent) loader.load(getClass().getResourceAsStream("Screen1.fxml"));
给定以下代码:
code1:
FXMLLoader loader = new FXMLLoader();
Parent root = (Parent) loader.load(getClass().getResource("Screen1.fxml"));
Screen1Controller controller = loader.getController();
if(controller == null)
System.out.println(" controller is null");
else System.out.println("controller is not null");
输出:
控制器为空
code2:
FXMLLoader loader = new FXMLLoader(getClass().getResource("Screen1.fxml"));
Parent root = (Parent)loader.load();
// FXMLLoader loader = new FXMLLoader();
// Parent root = (Parent) loader.load(getClass().getResource("Screen1.fxml"));
Screen1Controller controller = loader.getController();
if(controller == null)
System.out.println(" controller is null");
else System.out.println("controller is not null");
输出:
控制器不为空
我以为他们会给出相同的结果?不是吗?
排队
Parent root = (Parent) loader.load(getClass().getResource("Screen1.fxml"));
你打电话给getResource(URL)
。该方法是静态的,因此它不会更改 FXMLLoader
的任何实例(特别是不会在您的 loader
中创建控制器)。
也许您想调用 getResource(InputStream)
,它不是静态的。如果是这样,您应该将代码更改为:
Parent root = (Parent) loader.load(getClass().getResourceAsStream("Screen1.fxml"));