Graniteds基本位置未使用TideFXMLLoader设置

时间:2013-02-03 20:17:30

标签: spring fxml graniteds

我使用graniteds + javafx + spring进行了一个小型测试项目。我按照本教程GraniteDs+JavaFx

一切正常,但是如果我使用fxml文件,其中我有一些带有相对网址的图像,如下例所示:

<children>
    <ImageView fitHeight="32.0" fitWidth="32.0" layoutX="14.0" layoutY="14.0" onMouseClicked="#menuHome" pickOnBounds="true" preserveRatio="true">
      <image>
        <Image url="@../images/icons/home.png" />
      </image>
    </ImageView>

我有这个例子:

 SEVERE: Could not show view
 javafx.fxml.LoadException: Base location is undefined.
     at javafx.fxml.FXMLLoader$Element.processPropertyAttribute(FXMLLoader.java:283)
     at javafx.fxml.FXMLLoader$Element.processInstancePropertyAttributes(FXMLLoader.java:197)
     at javafx.fxml.FXMLLoader$ValueElement.processStartElement(FXMLLoader.java:570)
     at javafx.fxml.FXMLLoader.processStartElement(FXMLLoader.java:2314)
     at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2131)
     at org.granite.client.tide.javafx.TideFXMLLoader.load(TideFXMLLoader.java:49)

加载FXML的代码如下:

private Parent showView(Stage stage, boolean loggedIn) {
try {               
    Parent root = (Parent) TideFXMLLoader.load(contextManager.getContext(),
         loggedIn ? "Home.fxml" : "LoginUi.fxml", loggedIn ? Home.class
        : LoginUi.class);


            Scene scene = new Scene(root);              
            stage.setScene(scene);
            stage.show();

            return root;
        } catch (Exception e) {
            log.error(e, "Could not show view");
        }
        return null;
    }

有一种方法可以使用TideFXMLLoader设置基本位置吗?

由于

1 个答案:

答案 0 :(得分:2)

我知道这个问题有点老了,你可能已经解决了一些问题。但是我在加载fxml之前解决了它以下代码:

loader.setLocation(Class.class.getResource(URL));

希望有所帮助