私はパネル上に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が返さ。しかし、私は何かがここで問題が発生した場合は、ここで
'System.out.println(新しいファイル(" Untitled.png ")。getAbsolutePath());'を試し、ファイルが本当に存在するかどうかを確認してください。私の推測:そうではありません。 – Tom
少なくともIOExceptionをダンプするだけではなく、少なくともスタックトレースを出力するようにしてください。ユーザは、なぜそれが機能しないのですか? –
'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