1. ホーム
  2. java

[解決済み】JPanelに画像を追加する方法は?

2022-02-16 08:56:28

質問

を持っています。 JPanel に、その場で生成したJPEGやPNGの画像を追加したいと思います。

これまで見てきた例では、すべて Swingチュートリアル 特に スイング例 使用 ImageIcon s.

これらの画像をバイト配列で生成しているのですが、通常、640x480と、例で使っている一般的なアイコンよりも大きなサイズになっています。

  1. JPanelでそのサイズの画像を表示するためにImageIconクラスを使用することは、(パフォーマンスやその他の)問題がありますか?
  2. ってなんですか? 通常の のやり方は?
  3. ImageIconクラスを使わずに、JPanelに画像を追加する方法は?

編集 : チュートリアルとAPIをより注意深く調べると、JPanelに直接ImageIconを追加することはできないことがわかります。代わりに、JLabelのアイコンとして画像を設定することで、同じ効果を得ています。これは、正しいとは思えません...。

どうすればいい?

以下は、私のやり方です(画像を読み込む方法については、もう少し詳しく説明します)。

import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.swing.JPanel;

public class ImagePanel extends JPanel{

    private BufferedImage image;

    public ImagePanel() {
       try {                
          image = ImageIO.read(new File("image name and path"));
       } catch (IOException ex) {
            // handle exception...
       }
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.drawImage(image, 0, 0, this); // see javadoc for more info on the parameters            
    }

}