質問: new JLabel ( ii ); //画像部品を生成 jlImage.setSize ( sw, sh ); //画像サイズを設定 jp.add( jlImage ); //画像貼り付け } } ### 前提・実現したいこと JPanelに画像を貼り付けたいのですがエラーがでてしまいます。 99行目の jp.add( jlImage ); のjlImageを66行目のjp.add( jpChild2 );のjpChild2に貼り付けたいです。 ■■な機能を実装中に以下のエラーメッセージが発生しました。 99行目の jp.add( jlImage );のjpをjpChild2にするとエラーがでます。 ### 発生している問題・エラーメッセージ ``` エラーメッセージ Exception in thread"main"java.lang.NullPointerException at part20.putMonster(part20.java:99) at part20.main(part20.java:62) ``` ### 該当のソースコード jp.add( jlImage ); //画像貼り付け jpをjpChild2にするとエラーになります。 ### 試したこと 親パネルjpには子パネルは何枚も貼れます。 子パネルにはLabelは貼れます。 ### 補足情報(FW/ツールのバージョンなど) 初心者なんで理由がわかりません。 よろしくおねがいします。
回答: > > > ``` > static JPanel jpChild2; > ``` > > > ``` > JPanel jpChild2 = new JPanel(); > ``` > > この二つのインスタンスは**別物**です。 前者はstaticフィールドであり、後者はメソッド内のローカル変数です。 次のようにコードを変更してください。 ``` jpChild2 = new JPanel(); // 型を付けると、改めて変数を用意してしまう ``` ところで、static変数が多過ぎるように思います。 初心者の段階でstaticな要素をむやみに使うと**オブジェクト指向が崩壊します**。 性質や用途をしっかり理解するまでは、あまり使わないことをお勧めします。 コードの書き方について teratailには、コードを見やすく表示する機能があります。 質問編集画面を開き、コードを選択した状態でボタンを押してください。 !Java