无法使示例代码工作
Can't get sample code to work
我是 JavaFX 编码的新手(在 IntelliJ IDEA 中),并且一直在阅读/搜索如何在主控制器/容器中交换场景。我在另一个线程 (Loading new fxml in the same scene) 中找到了 jewelsea 的答案,但我收到以下代码的错误。
public static void loadVista(String fxml) {
try {
mainController.setVista(
FXMLLoader.load(VistaNavigator.class.getResource(fxml)));
} catch (IOException e) {
e.printStackTrace();
}
}
我收到的错误如下:
Error:(56, 27) java: method setVista in class sample.MainController cannot be applied to given types;
required: javafx.scene.Node
found: java.lang.Object
reason: actual argument java.lang.Object cannot be converted to javafx.scene.Node by method invocation conversion
我知道其他人已经让这个工作了,但我所做的只是创建一个新项目并复制代码。谁能帮帮我?
看起来你正试图用 JDK 1.7 编译它:代码只能在 JDK 1.8 中工作(这里的区别是 [= 中引入的泛型方法的增强类型推断) 20=] 1.8).
您应该将 IntelliJ 配置为使用 JDK 1.8 而不是 1.7。
如果您想尝试将代码还原为 JDK 1.7 兼容,您可以尝试将其替换为
public static void loadVista(String fxml) {
try {
mainController.setVista(
FXMLLoader.<Node>load(VistaNavigator.class.getResource(fxml)));
} catch (IOException e) {
e.printStackTrace();
}
}
(如果需要,使用适当的 import javafx.scene.Node ;
)。当然,可能还有其他不兼容问题,因为您使用的代码是针对 JDK 1.8.
我是 JavaFX 编码的新手(在 IntelliJ IDEA 中),并且一直在阅读/搜索如何在主控制器/容器中交换场景。我在另一个线程 (Loading new fxml in the same scene) 中找到了 jewelsea 的答案,但我收到以下代码的错误。
public static void loadVista(String fxml) {
try {
mainController.setVista(
FXMLLoader.load(VistaNavigator.class.getResource(fxml)));
} catch (IOException e) {
e.printStackTrace();
}
}
我收到的错误如下:
Error:(56, 27) java: method setVista in class sample.MainController cannot be applied to given types;
required: javafx.scene.Node
found: java.lang.Object
reason: actual argument java.lang.Object cannot be converted to javafx.scene.Node by method invocation conversion
我知道其他人已经让这个工作了,但我所做的只是创建一个新项目并复制代码。谁能帮帮我?
看起来你正试图用 JDK 1.7 编译它:代码只能在 JDK 1.8 中工作(这里的区别是 [= 中引入的泛型方法的增强类型推断) 20=] 1.8).
您应该将 IntelliJ 配置为使用 JDK 1.8 而不是 1.7。
如果您想尝试将代码还原为 JDK 1.7 兼容,您可以尝试将其替换为
public static void loadVista(String fxml) {
try {
mainController.setVista(
FXMLLoader.<Node>load(VistaNavigator.class.getResource(fxml)));
} catch (IOException e) {
e.printStackTrace();
}
}
(如果需要,使用适当的 import javafx.scene.Node ;
)。当然,可能还有其他不兼容问题,因为您使用的代码是针对 JDK 1.8.