1

我目前正在尝试进入 JavaFX 2.0,但我无法让.css样式表在我的应用程序中工作。我已经按照http://docs.oracle.com/javafx/2/get_started/css.htm#BABBGJBI上的指南进行操作,但是每当我尝试.css通过

        scene.getStylesheets().add(Login.class.getResource("loginform.css").toExternalForm());

我收到以下错误:

    Exception in Application start method
Exception in thread "main" java.lang.RuntimeException: Exception in Application start method
    at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:399)
    at com.sun.javafx.application.LauncherImpl.access$000(LauncherImpl.java:47)
    at com.sun.javafx.application.LauncherImpl$1.run(LauncherImpl.java:115)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException
    at Login.start(Login.java:68)
    at com.sun.javafx.application.LauncherImpl$5.run(LauncherImpl.java:315)
    at com.sun.javafx.application.PlatformImpl$4.run(PlatformImpl.java:174)
    at com.sun.javafx.application.PlatformImpl$3.run(PlatformImpl.java:141)
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at com.sun.glass.ui.win.WinApplication.access$100(WinApplication.java:29)
    at com.sun.glass.ui.win.WinApplication$2$1.run(WinApplication.java:62)
    ... 1 more

css路径位于我的eclipse项目路径中: C:\Users\UserName\Dropbox\Documents\Eclipse\FirstExamples\loginform.css

我会很感激任何帮助,我无法让它工作,不是绝对路径,也不是示例中所示的相对路径。

4

2 回答 2

3

检查你的eclipse项目的编译输出路径,确保loginform.css和Login.class在同一个目录下

我已经通过将样式表放入我的 src 文件夹中解决了这个问题,这不是一个很好的解决方案,但是 ../formm.css 似乎不起作用,不知道为什么

您正在通过class.getResource方法请求 css 文件,该方法将在类所在的同一位置查找资源。当您将样式表放在 src 文件夹中时,无论您使用什么构建系统,都会在构建期间将样式表复制到与 Login.class 相同的目录中。如果您不将其放在该 src 文件夹中,则不会发生副本。

如果您不想将 css 文件放在与 Java 源代码相同的目录中,则将构建系统设置为从另一个目录复制它,或者在添加样式表时不要使用类加载器机制,例如使用一个绝对文件或 http url 或基于user.dir 系统属性(当前工作目录)的文件 url。

确实,只需将样式表放在 src 文件夹中并以您正在做的方式访问它就可以了,而且当您将应用程序部署到不同的环境时,它也使资源定位变得容易。

于 2012-06-02T07:39:14.053 回答
1

如果您将任何东西用作资源,则必须在其名称前加上“/”前缀,并且该资源必须位于类路径中。

我有一个目录的设置,例如资源,其中包含.css。然后我用这个:

scene.getStylesheets().add(Login.class.getResource("/loginform.css").toExternalForm());

包含 .css 文件的目录“resources”被添加到类路径中(例如,在 Eclipse 中,只需将其设为源文件夹)。

然而遗憾的是,这个例外完全没有用;我注意到 .css 是我第一次添加它时的问题。

于 2013-03-23T08:49:25.057 回答