JavaFX CSS URL没有加载

时间:2014-07-01 19:42:29

标签: java javafx

我正在尝试加载XML资源,我这样做:

fxmlLoader = new FXMLLoader();
root = fxmlLoader.load(getClass().getResource("Document.fxml").openStream());

当我运行我的代码时,我得到了这个错误:

null/../css/button.css
javafx.fxml.LoadException: 
unknown path:23

当我看第23行时,我有这个:

<URL value="@../css/button.css" />

这有效:

fxmlLoader = new FXMLLoader();
root = fxmlLoader.load(getClass().getResource("Document.fxml"));

但是当我运行以下

controller = (DocumentController)fxmlLoader.getController();

controllernull

如何修复css问题?

2 个答案:

答案 0 :(得分:3)

这是一个猜测,但我认为问题在于您为FXMLLoader而不是URL提供输入流。因此,FXMLLoader不知道FXML资源的位置,因此无法解析网址标记中的..。这将解释错误消息:

  

null /../ css / button.css

     

javafx.fxml.LoadException:

     

未知路径:23

您提供的路径相对于null,因为FXMLLoader不知道FXML文件的位置;另请注意&#34;未知路径&#34;作为FXML的来源。

试试这个(这是更常见的)

fxmlLoader = new FXMLLoader(getClass().getResource("Document.fxml"));
root = fxmlLoader.load(); 

我认为它只为控制器返回null,因为加载fxml时出错。

答案 1 :(得分:0)

在.fxml中,将<URL value = "@../css/button.css"/>更改为<URL value = "@/css/button.css" />。如果你有“css”或“image”,那就是一样的。