質問

ボタンに画像を追加しましたが、そのフレームを実行するとこの例外がスローされます。なぜですか?助けてください。

init:

deps-jar:
compile-single:
run-single:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at javax.swing.ImageIcon.<init>(ImageIcon.java:138)
        at ClientGUI.IdAndPasswordFrame.initComponents(IdAndPasswordFrame.java:91)
        at ClientGUI.IdAndPasswordFrame.<init>(IdAndPasswordFrame.java:22)
        at ClientGUI.IdAndPasswordFrame$4.run(IdAndPasswordFrame.java:200)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
BUILD SUCCESSFUL (total time: 1 second)

138行目:

public ImageIcon (URL location) {
    this(location, location.toExternalForm());
}

91行目:

 jButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/yahoo_1.gif"))); // NOI18N

私は次のような不十分なチェックを使用します (Peter Lang が推奨): System.out.println(getClass().getResource("/Images/yahoo_1.gif"));null が返されるのですが、なぜですか?私を助けてください。

役に立ちましたか?

解決

この意味は getClass().getResource("/Images/yahoo_1.gif") 戻り値 null.

JavaDoc 次の場合にこれが起こると述べています

リソースが見つからないか、呼び出し元にリソースを取得するための適切な権限がありません。

  1. どうかを確認してください getResource 本当に戻ってきます null:
    System.out.println(getClass().getResource("/Images/yahoo_1.gif"));

  2. パスが正しいこと、およびそれがクラスパス内にあることを確認してください。

編集:

NetBeansで試してみました。次の構造を作成しました

Source Packages
  Images
    yahoo_1.gif

そしてあなたのコードはうまくいきました。これはあなたの構造ですか?

アプリケーションを右クリックして選択してみてください Clean and Build.

他のヒント

これを修正するには、画像を 置き場 ディレクトリ - 中にありません 送信元 ディレクトリ。

そうしないと、常に null が返されます getClass().getResource("image.png"). 。パスは nullではない プロジェクトの .class ファイルが配置されているバイナリ ディレクトリ内に必要なイメージをコピーする場合にのみ、上記のように設定できます。

これで問題は解決しました。私がこれで役に立ったかどうか教えてください。

イオアナ

これはgetClass().getResource("/Images/yahoo_1.gif")すなわち.GIFがクラスパス上に見つかりませんでした。null戻りますように見えます。 (多分画像対イメージ?)

に渡されるURLは、この行からヌルです。

getClass().getResource("/Images/yahoo_1.gif")

JDKのドキュメントから:

  

のgetResource(..)リターン]リソースを読み込むためのURLオブジェクト   またはリソースがnullにできなかった場合   見つからないか、呼び出しはありません。   十分な権限を取得します   リソース

たぶん、あなたは( "画像/ yahoo_1.gif")を意味 - すなわち、相対パスは絶対的なものではない。

私も同じ問題を抱えていました。私にとってうまくいったのは次のとおりです。

  1. jar ファイルまたは bin フォルダー (.class ファイルのあるフォルダー) を調べて、イメージのパスを確認します。
  2. リスト項目
private class HandlerClass implements ActionListener{
        public void actionperformed(ActionEvent event){
            JOptionPane.showMessageDialog(null, String.format("%s", event.getActionCommand()));
        }

}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top