2016-05-01 5 views
-1

なぜこの問題が発生しているのかを知りたいと思っています。このコードセクションをあるJavaプロジェクトから別のプロジェクトにそのままコピーして貼り付け、 。BufferedImageを作成しようとするとIllegalArgumentExceptionがスローされる

4x4の四角形のグリッドを表示しようとしています。

次の例外は、ライン37にスローされます。スレッドで

例外 "メイン" java.lang.IllegalArgumentExceptionが:入力== nullを!

public class DistractorTask { 

    private JPanel panel; 
    private GridBagConstraints c; 
    private BufferedImage squareImage; 

    public DistractorTask(JPanel panel){ 
     this.panel = panel; 
     c = new GridBagConstraints(); 
     displayGrid(); 

    } 

    private void displayGrid() { 


     c.gridx = 0; 
     c.gridy = 0; 

     try { 
      squareImage = ImageIO.read(this.getClass().getResource("square.gif")); //line 37 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

     JLabel squareLabel = new JLabel(new ImageIcon(squareImage)); 

     for(int i = 0; i < 16; i++){ 
      c.gridx = i % 4; 
      c.gridy = i/4; 
      panel.add(squareLabel, c); 
      panel.validate(); 

     } 

    } 
} 
+0

プロジェクトに 'square.gif'ファイルがあることを確認してください。 – Apurva

+0

そこにあります。これはsrcフォルダーと同じレベルにあるイメージフォルダーにあります。 – lb91

答えて

0

あなたのコードは、クラスパスから画像をロードしようとしています。あなたのコンパイルしたDistractorTask.classと同じフォルダにイメージを移動してみてください。

+0

イメージをsrcフォルダに移動する必要があるのですか?なぜ私はこれをやらなければならないのか混乱しています。なぜなら以前のプロジェクトでは以前にこの問題に遭遇していなかったからです(私は通常、srcフォルダと同じレベルの画像フォルダを持っています。例外がスローされます)。 – lb91

+0

これは、IDEがコンパイル処理中にイメージをコンパイル済みのフォルダにコピーするかどうかによって異なります。デバッグ目的のために、このフォルダにイメージをコピーして、その動作を確認してください。次に、リソースをコピーする方法を調べることができます... –

+0

私はあなたが言ったように、例外はもうスローされていません。しかし、私のプログラムは実際に何もしていません。 – lb91

関連する問題