2016-04-14 3 views
0

私はパネル上にBufferedImageを描画し、componentResizedが起きたときにいつでもそれを再描画することによってサイズ変更可能なイメージを作成しようとしています。しかし、以前のバージョンでは画像のロードがうまくいっていたにもかかわらず、Javaはイメージが存在しないと主張しています。偶数成分リスナーなしJavaが画像上でnullポインタ例外を突然返すのはなぜですか?

public class Image extends JPanel{ 
    BufferedImage img=null; 

    public Image{ 
    try { 
     img = ImageIO.read(new File("Untitled.png")); 
    } 
    catch (IOException e) { 
    } 
    Dimension d=getSize(); 
    Graphics g=getGraphics(); 
    g.drawImage(img, 0, 0, d.width, d.height, null); 

を次のようにコードがある 、それのdrawImageにNullPointerExceptionが返さ。しかし、私は何かがここで問題が発生した場合は、ここで

+2

'System.out.println(新しいファイル(" Untitled.png ")。getAbsolutePath());'を試し、ファイルが本当に存在するかどうかを確認してください。私の推測:そうではありません。 – Tom

+1

少なくともIOExceptionをダンプするだけではなく、少なくともスタックトレースを出力するようにしてください。ユーザは、なぜそれが機能しないのですか? –

+0

'catch(IOException e){}'決してこれをしないでください。あなたの 'ImageIO.read'はおそらく空のキャッチブロックのためにあなたが知らない例外を投げているでしょう。また、描画には 'getGraphics'を使用しないでください。 http://stackoverflow.com/a/15991175/2891664を参照してください。 (グラフィックスg){' ' super.paintComponent(g); ' ' g.drawImage(img、0、0、d.width、d.height、null): – Radiodef

答えて

0

の理由で、このグラフィックスオブジェクトgがNULLであり得ることに起因します。 グラフィックスg = getGraphics();

0

コードに何か問題があるとの考えに私をリードしている、それが以前働いていたので、画像は、nullでないことを知っている: img = ImageIO.read(new File("Untitled.png"));次にあなたがここにnull参照オブジェクトに描画されています:

g.drawImage(img, 0, 0, d.width, d.height, null); 

するNPE

関連する問題