2

私が書いているアプリケーションでgetImage()画像を表示しようとしています。JPanel私はこれを機能させようと試みましたが、最終的には、パスが完全に間違っていても機能せず、NullPointerException期待どおりに戻らないことを発見しました。

Image i;    

public void paintComponent(Graphics g) {
    super.paintComponent(g);

    Graphics2D g2d = (Graphics2D)g;
    g2d.drawImage(i, 0, 0, 200, 200, this);
} // end paintComponent();

public Pnl() {
    super();
    setBackground(Color.GREEN);
    setBorder(BorderFactory.createLineBorder(Color.GRAY, 10));
    i = Toolkit.getDefaultToolkit().getImage("shrek.jpg");
} // end constructor    

「shrek...jdhhd」などのパラメーターを指定してコードを実行すると、getImage()まったく同じことが行われます。

4

2 に答える 2

2

画像を読み取る方法はいくつかあります。

  1. を使用ImageIconしてから抽出しImageます。
  2. 使用するImageIO

画像へのパスに問題があると思われます。これを試して:

Path imgPath = Paths.get("/path/to/image.png");
if(Files.exists(imgPath)){
    // do whatever
} else{

    // incorrect path
}

Pathが実際に存在する場合 :

ImageIcon imageAsIcon = new ImageIcon(imgPath.getAbsolutePath());
Image imageOfIcon = imageAsIcon.getImage();

Graphicsこれで、そのオブジェクトを取得して、それをBufferedImage

ImageIO次のように 使用することもできます。

BufferedImage img;

try {
    URL url = new URL(new File("/path/to/image.png");
    img = ImageIO.read(url);
} catch (IOException e) {
}
于 2013-10-20T02:59:48.370 に答える