3

このコード行を使用して CSS ファイルを JavaFX にロードしようとしていますが、null ポインター例外が発生します。

scene.getStylesheets().add(welcome.class.getResource("background.css").toExternalForm());

Mybackground.cssは、作成したウェルカム クラスと同じフォルダーにあります。

nullポインタを取得する理由は何ですか?

エラーログ:

Exception in Application start method
Exception in thread "main" java.lang.RuntimeException: Exception in Application start method
    at com.sun.javafx.application.LauncherImpl.launchApplication1(Unknown Source)
    at com.sun.javafx.application.LauncherImpl.access$000(Unknown Source)
    at com.sun.javafx.application.LauncherImpl$1.run(Unknown Source)
    at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.NullPointerException
    at welcome.start(welcome.java:164)
    at com.sun.javafx.application.LauncherImpl$5.run(Unknown Source)
    at com.sun.javafx.application.PlatformImpl$5.run(Unknown Source)
    at com.sun.javafx.application.PlatformImpl$4$1.run(Unknown Source)
    at com.sun.javafx.application.PlatformImpl$4$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.application.PlatformImpl$4.run(Unknown Source)
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at com.sun.glass.ui.win.WinApplication.access$100(Unknown Source)
    at com.sun.glass.ui.win.WinApplication$3$1.run(Unknown Source)
    ... 1 more
4

4 に答える 4

5

すべてのリソースが正常にロードされるようにクラスパス上にある必要があります (ウェルカム クラスと同じフォルダーにある場合は、既にそうです)。次に、スタイルシート ファイルへのパスの前に「/」記号を付けて、次のようにする必要があります。

scene.getStylesheets().add(welcome.class.getResource("/background.css").toExternalForm());

その後、正常にロードされます。

于 2013-05-24T19:44:38.770 に答える
1

だから私はこれが古い質問であることを知っていますが、最近これと同様の問題があったので、答えだと思うものを教えてください:

JavaFX ファイルと CSS ファイルを一緒に使用するには、次の 3 つの条件を満たす必要があります。

  1. JavaFX ファイルと CSS ファイルの両方が同じディレクトリにある必要があります
  2. 次のような CSS ファイルを使用していることをコードで宣言する必要があります。

      scene.getStylesheets().add(welcome.class.getResource("background.css").toExternalForm());
    
  3. そして、取り残されていたと思うのは、package PackageName; です。

    あなたのパッケージ名をパッケージ化します。.
    インポートを定義する場所の前のJavaFXファイルの先頭になります。これは、Java で複数のファイルを操作することに慣れていない場合や、コードをゼロから作成する場合は、簡単に忘れてしまう可能性があります。パッケージ YourPackageNameがありません。基本ファイルの動作は停止しませんが、独自に定義した CSS ファイルを使用しようとすると、プログラムの実行が停止する可能性があります。

于 2014-02-27T15:15:31.763 に答える