无法获取示例代码

时间:2015-03-26 05:58:36

标签: intellij-idea javafx

我是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

我知道其他人已经开始工作,但我所做的就是创建一个新项目并复制代码。任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

看起来您正在尝试使用JDK 1.7编译它:代码只能在JDK 1.8中使用(这里的差异是JDK 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的。