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 に答える