语言:JavaFX
IDE:Netbeans
问题:我正在尝试将css文件添加到样式表中,但以下代码的第一行始终生成 NullPointerException
:
String css = this.getClass().getResource("double_slider.css").toExternalForm();
scene.getStylesheets().add(css);
我've tried replacing 1761611 with the full path. double_slider.css is currently located in the same package as the class that makes this call. I'也尝试了在http://introjava.wordpress.com/2012/03/21/linking-a-css-style-sheet-to-javafx-scene-graph/找到的所有变种,没有成功 . 清洁和构建也没有帮助 .
如果我将css文件放在转储.class文件的build文件夹中,NullPointerException就会消失 . 但是后来css文件无法正常工作,因为它引用了我项目中的其他文件 .
12 回答
我遇到了同样的问题(在NetBeans 8中) . 我在这里找到了解决方案:https://blog.idrsolutions.com/2014/04/use-external-css-files-javafx/
我的资源文件spreadsheet.css在这里:
在mainView.java中:
希望这可以帮助 .
您可以将.cxml文件中的style.css作为属性直接添加到根元素中,因为此样式表=“@ your_relative_path / style.css” .
如果要访问src文件夹中的css文件,可以使用@ .. / style.css
将
yourname.css
文件直接放在 src 目录下 .清洁和建造所需
我认为你错过了导致无法找到CSS文件的斜杠 . 尝试更正您的路径参考 .
例如:
将会:
我有同样的问题 . 我在Win7上使用NetBeans 7.3和JavaFX 2.2.7,JDK 7.0_21 .
我的解决方案是将.css放在 SAME 文件夹中作为我的包含 void start(Stage stage) 的Java文件 . 所以Project视图看起来像这样:
ProjectName
源包
pkg无论如何
Main.java
MyCssFile.css
(所以CSS文件是 IN 这个软件包,我发现这个软件非常奇怪且具有矛盾性 . 有些文档告诉我把它放在项目的根目录中,以便在运行时找到它,但这对我来说不适用于NB . 我的应用程序现在运行,无论我是通过按Ctrl U启动包含“ start(..) ”的文件,还是单击项目上的Run 's context menu. And it doesn'无论我是否让NB将所有内容都放入JAR中 . )
这是在上述情况下加载CSS的代码:
虽然这不起作用:
希望这可以帮助 .
考虑你的旧代码:
尝试将其更改为此新代码,它将起作用:
使用
getClass()
时,不需要使用this
关键字 .我希望这对你有用 . :)
嗯,你在Netbeans吗?尝试“清理并构建”项目 .
您是否在设置样式表之前初始化了场景对象?
scene = new Scene(myRootLayout,600,600); // 例如
这很简单 .
这对我有用 -
在你的文件.java中使用它
Folder Structure
在MedicalLibraryFx.java中
Folder structure when css is in the same directory as controller