Dan*_*lle 12 css javafx stylesheet
语言:JavaFX
IDE:Netbeans
问题:我正在尝试将css文件添加到样式表中,但以下代码的第一行始终生成NullPointerException:
String css = this.getClass().getResource("double_slider.css").toExternalForm();
scene.getStylesheets().add(css);
Run Code Online (Sandbox Code Playgroud)
我试过用完整的路径替换"double_slider.css".double_slider.css当前位于与进行此调用的类相同的包中.我还尝试了http://introjava.wordpress.com/2012/03/21/linking-a-css-style-sheet-to-javafx-scene-graph/上找到的所有变体,但没有成功.清洁和构建也没有帮助.
如果我将css文件放在转储.class文件的build文件夹中,NullPointerException就会消失.但是后来css文件无法正常工作,因为它引用了我项目中的其他文件.
小智 18
把你的yourname.css文件直接放在src目录下.
scene.getStylesheets().add("yourname.css")
Run Code Online (Sandbox Code Playgroud)
清洁和建造所需
Kor*_*kig 12
我认为你错过了导致无法找到CSS文件的斜杠.尝试更正您的路径参考.
例如:
-root
--app/Main.java
--assets/double_slider.css
Run Code Online (Sandbox Code Playgroud)
将会:
String css = this.getClass().getResource("/assets/double_slider.css").toExternalForm();
Run Code Online (Sandbox Code Playgroud)
小智 8
我有同样的问题.我在Win7上使用NetBeans 7.3和JavaFX 2.2.7,JDK 7.0_21.
我的解决方案是将.css放在SAME文件夹中作为我的包含void start(舞台阶段)的 Java文件.所以Project视图看起来像这样:
(所以CSS文件是在包中,我发现它非常奇怪和禁忌.有些文档告诉我把它放在项目的根目录中,所以它可以在运行时找到,但这对我来说不适用于NB.我的应用程序现在运行,无论我是通过点击+ 或点击项目的上下文菜单上的Run来启动包含" start(..) " 的文件.而且我是否让NB将所有内容放入JAR中并不重要.)CtrlU
这是在上述情况下加载CSS的代码:
URL url = this.getClass().getResource("controlStyle1.css");
if (url == null) {
System.out.println("Resource not found. Aborting.");
System.exit(-1);
}
String css = url.toExternalForm();
scene.getStylesheets().add(css);
Run Code Online (Sandbox Code Playgroud)
虽然这不起作用:
scene.getStylesheets().add("controlStyle1.css");
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.
所有答案都缺少一个非常重要的部分,那就是css 文件名称之前的“ / ”:
文件夹结构:
src
resources
stylesheet.css
Run Code Online (Sandbox Code Playgroud)
像这样加载它,注意css 文件之前的起始斜杠:
scene.getStylesheets().add(getClass().getResource("/stylesheet.css").toExternalForm())
Run Code Online (Sandbox Code Playgroud)
我遇到了同样的问题(在 NetBeans 8 中)。我在这里找到了一个解决方案:https : //blog.idrsolutions.com/2014/04/use-external-css-files-javafx/
我的资源文件电子表格.css 在这里:
MyApp
-resources
--spreadsheet.css
-source packages
--fr.ccc.myapp.view
---mainView.java
---FXMLMain.fxml
Run Code Online (Sandbox Code Playgroud)
在 mainView.java 中:
File f = new File("resources/spreadsheet.css");
spreadsheet.getStylesheets().add("file:///" + f.getAbsolutePath().replace("\\", "/"));
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助。