我正在研究official JavaFX tutorial。我试图将示例5-1中的代码添加到我的场景中,这是" Main"的一部分。按照说明分类:
Scene scene = new Scene(grid, 300, 275);
primaryStage.setScene(scene);
scene.getStylesheets().add(Login.class.getResource("Login.css").toExternalForm());
primaryStage.show();
我使用的是JavaFX运行时版本8.0.72-b15和IntelliJ IDEA 15.0.5。我已经存储了我的" Login.css"文件夹中的文件:
C:\Users\XXXXXXXX\IdeaProjects\Login\src
我的项目文件结构如下:
当我跑步时#34; Main"我收到以下错误消息:
Information:Using javac 1.8.0_77 to compile java sources
Information:java: Errors occurred while compiling module 'Login'
Information:6/9/2016 2:04 PM - Compilation completed with 1 error and 0 warnings in 571ms
C:\Users\XXXXXXXX\IdeaProjects\Login\src\sample\Main.java
Error:(69, 36) java: cannot find symbol
symbol: class Login
location: class sample.Main
This answer似乎暗示自定义CSS文件应位于" src"文件夹,但它似乎不适合我。如何让我的JavaFX项目导入这个自定义CSS文件?
答案 0 :(得分:3)
您没有Login类...您只有sample.Main
类,因此代码中的Login.class
引用将无法解析(该错误与CSS无关)。< / p>
修复类引用错误后,还需要修复对css文件位置的引用(因为Login.css
文件不在示例包中,而是在源根目录中,因此它将最终被复制到类路径的根目录)。要引用类路径根目录中的资源,请在资源名称前添加/
,即/Login.css
。
因此,在完成这些更改后,您将拥有以下代码(您在以前的评论中验证过的代码):
scene.getStylesheets().add(sample.Main.class.getResource("/Login.css").toExternalForm());
答案 1 :(得分:0)
fxViewObject.getStylesheets().add(this.class.getResource("/Login.css").toExternalForm());
答案 2 :(得分:0)
scene.getStylesheets().add(this.getClass().getResource("/stylesheet.css").toString());
建议输入this.getclass(),您可以将其粘贴到任何类和任何包中。 toString()也可以工作,无论如何都会调用toExternalForm()。也许它更好,因为任何java程序员都知道toString。更容易理解代码是更好的。
(也许有一个小的性能差异,知道java的内部和外部的人可以评论这个顺便说一句。在字节码级别它不会换出我检查,只在运行时。)