回答編集履歴

3 成形

LouiS0616

LouiS0616 score 34853

2017/08/06 00:43  投稿

考えたら、ファイル入力の失敗は例外が送出されるので、ヌルポにならないですね。失礼しました。
改めまして、createBasePanelメソッド内の次のコードに問題がありました。
> ```Java
> //可変表示パネル
> JPanel jpChild2=createPanel(Color.CYAN);//小パネル作成
> jp.add(jpChild2);//親パネルにパネル追加
> ```
ここの`jpChild2`はローカル変数ですが...
addMonsterメソッドで参照している`jpChild2`はクラスMyFrameのフィールドです。
そもそも見ているものが違うんですね。
次のように書き換えてください。
```Java
//可変表示パネル
jpChild2=createPanel(Color.CYAN);//小パネル作成
jp.add(jpChild2);//親パネルにパネル追加
```
---
このエラー、質問者様の[前回の質問](https://teratail.com/questions/87136)と同じ原因ですね...
次回以降、同様のエラーが出たときはこいつを重点的にチェックしてみてください。
残骸
---
メソッドslimeの、以下の行が怪しいです。
> ```Java
> BufferedImage bs3=ba3.getSubimage(cw*x,ch*y,cw,ch);
> ```
ba3の中身が空っぽだと、ご提示のようなエラーが出ます。
ba3は、コンストラクタで初期化されているようですが...
> ```Java
> File file3=new File("[Monster]Slime1_pochi.jpg");//スライムのファイル読み込み
> ba3=ImageIO.read(file3);//スライム画像全体を読み込む
> ```
ファイルが正しく開けていないような気がします。
画像ファイルのパスを絶対パスにしたとき、上手く動作するか確認してみてください。
2 変更

LouiS0616

LouiS0616 score 34853

2017/08/06 00:31  投稿

考えたら、ファイル入力の失敗は例外が送出されるので、ヌルポにならないですね。失礼しました。
改めまして、createBasePanelメソッド内の次のコードに問題がありました。
> ```Java
> //可変表示パネル
> JPanel jpChild2=createPanel(Color.CYAN);//小パネル作成
> jp.add(jpChild2);//親パネルにパネル追加
> ```
ここの`jpChild2`はローカル変数ですが...
slimeメソッドで参照している`jpChild2`はクラスMyFrameのフィールドです。
addMonsterメソッドで参照している`jpChild2`はクラスMyFrameのフィールドです。
そもそも見ているものが違うんですね。
次のように書き換えてください。
```Java
//可変表示パネル
jpChild2=createPanel(Color.CYAN);//小パネル作成
jp.add(jpChild2);//親パネルにパネル追加
```
---
このエラー、質問者様の[前回の質問](https://teratail.com/questions/87136)と同じ原因ですね...
fiveHundred様が回答していらっしゃるように、同じ名前の変数が宣言されていることに問題があります。
次回以降、同様のエラーが出たときはこいつを重点的にチェックしてみてください。
残骸
---
メソッドslimeの、以下の行が怪しいです。
> ```Java
> BufferedImage bs3=ba3.getSubimage(cw*x,ch*y,cw,ch);
> ```
ba3の中身が空っぽだと、ご提示のようなエラーが出ます。
ba3は、コンストラクタで初期化されているようですが...
> ```Java
> File file3=new File("[Monster]Slime1_pochi.jpg");//スライムのファイル読み込み
> ba3=ImageIO.read(file3);//スライム画像全体を読み込む
> ```
ファイルが正しく開けていないような気がします。
画像ファイルのパスを絶対パスにしたとき、上手く動作するか確認してみてください。
1 追記

LouiS0616

LouiS0616 score 34853

2017/08/06 00:30  投稿

考えたら、ファイル入力の失敗は例外が送出されるので、ヌルポにならないですね。失礼しました。  
 
改めまして、createBasePanelメソッド内の次のコードに問題がありました。  
> ```Java  
> //可変表示パネル  
> JPanel jpChild2=createPanel(Color.CYAN);//小パネル作成  
> jp.add(jpChild2);//親パネルにパネル追加  
> ```  
 
ここの`jpChild2`はローカル変数ですが...  
slimeメソッドで参照している`jpChild2`はクラスMyFrameのフィールドです。  
そもそも見ているものが違うんですね。  
 
次のように書き換えてください。  
```Java  
//可変表示パネル  
jpChild2=createPanel(Color.CYAN);//小パネル作成  
jp.add(jpChild2);//親パネルにパネル追加  
```  
 
---  
このエラー、質問者様の[前回の質問](https://teratail.com/questions/87136)と同じ原因ですね...  
fiveHundred様が回答していらっしゃるように、同じ名前の変数が宣言されていることに問題があります。  
次回以降、同様のエラーが出たときはこいつを重点的にチェックしてみてください。  
 
残骸  
---  
メソッドslimeの、以下の行が怪しいです。
> ```Java
> BufferedImage bs3=ba3.getSubimage(cw*x,ch*y,cw,ch);
> ```
ba3の中身が空っぽだと、ご提示のようなエラーが出ます。
ba3は、コンストラクタで初期化されているようですが...
> ```Java
> File file3=new File("[Monster]Slime1_pochi.jpg");//スライムのファイル読み込み
> ba3=ImageIO.read(file3);//スライム画像全体を読み込む
> ```
ファイルが正しく開けていないような気がします。
画像ファイルのパスを絶対パスにしたとき、上手く動作するか確認してみてください。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る