我的语法从FXML文件调用样式表(css)有什么问题?

ade*_*ena 4 javafx java-8 fxml

我在NetBeans 8中使用Java 8/JavaFX和FXML.

在我的FXML文档中的第一个控制器(一个AnchorPane)中,我有这个,它有效:

stylesheets="file:///C:/Users/me/Documents/NetBeansProjects/MyApp/src/myApp/myStyle.css"
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试用任何类型的相对路径替换它时,我在运行时收到以下错误:

com.sun.javafx.css.StyleManager loadStylesheetUnPrivileged
WARNING: Resource "myStyle.css" not found.
Run Code Online (Sandbox Code Playgroud)

我试过了

stylesheets="myStyle.css"
stylesheets="file://myStyle.css"
stylesheets="./myStyle.css"
stylesheets="css/myStyle.css"
Run Code Online (Sandbox Code Playgroud)

(我把css文件的副本放在它所在的子目录中)

......也许还有其他50种排列.每次我得到同样的错误.

我关心的原因是我遇到了第二个问题.在第一个版本中,这可以在我的机器上运行...当我将我的jar文件带到另一台机器时,运行应用程序时不会应用css ...就像资源文件没有被复制一样.

救命?

谢谢!

-Adeena

Ita*_*iha 5

让我考虑一下您的项目结构如下

MyApp
  |
  |_ src
      |
      |_controllers (Controllers)
      |_view (FXML)
      |_style (css)
          |_myStyle.css
Run Code Online (Sandbox Code Playgroud)

您可以使用FXML来指定相对路径

<stylesheets>
   <URL value="@../style/myStyle.css" />
</stylesheets>
Run Code Online (Sandbox Code Playgroud)

在控制器中,您可以按如下方式添加它

layout.getStylesheets().add(getClass().
         getResource("/style/myStyle.css")).toExternalForm();
Run Code Online (Sandbox Code Playgroud)