JavaFX 8 : Adding a Custom CSS File Via class. getResource() 错误

标签 java intellij-idea javafx-8

我正在处理 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

我的项目文件结构如下:

  • 登录
    • .想法
    • 出去
    • 来源
      • sample
        • Controller .java
        • 主程序.java
        • 示例.fxml
      • 背景.jpg
      • 登录.css

当我运行“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 文件?

最佳答案

您没有登录类...您只有一个 sample.Main 类,因此代码中的 Login.class 引用不会解析(该错误与 CSS 无关)。

修复类引用错误后,您还需要修复对 css 文件位置的引用(因为您的 Login.css 文件不在示例包中,而是在源代码中root,所以它最终会被复制到类路径的根目录中)。要引用类路径根目录中的资源,请在资源名称前加上 /,即 /Login.css

因此,在进行这些更改之后,您将获得以下代码(您已在之前的评论中验证过该代码有效):

scene.getStylesheets().add(sample.Main.class.getResource("/Login.css").toExtern‌​alForm());

关于JavaFX 8 : Adding a Custom CSS File Via class. getResource() 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37733289/

相关文章:

java - 图片正在部分下载,

java - PDFBox使用adbe.x509.rsa_sha1时在签名字典中指定cert

java - 如何在 IntelliJ 中调用方法/构造函数参数提示?

Swing 中的 JavaFX 集成

java - WebView 在代理后面运行时显示空白页面

java - 将 Activity 上下文传递给类文件

java - Android 对话框在一定的计算后关闭

android - 理想的 Gradle 配置为每个源集创建单独的模块做什么?他会改变他的依赖关系吗?

intellij-idea - IntelliJ - 文件观察器 : wrong output of macros

java - javafx 中是否有任意形状的 "fill"函数?