Javaで画像を表示する3つの方法

JLabel.setIcon()を使用する方法

生徒
生徒

教授?
Javaで画像を表示したい場合は、どうすればいいのですか?

教授
教授

SwingライブラリのJLabelクラスを使って、画像をコンポーネントとして表示できます。
JLabelに画像ファイルから作成したImageIconオブジェクトをセットして、JFrameに追加します。
コードは次のようになりますよ?

import javax.swing.*;
import java.awt.*;

public class ImageExample1 {
    public static void main(String[] args) {
        JFrame frame = new JFrame("画像表示");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300, 300);
        frame.setLayout(new FlowLayout());

        // 画像ファイルからImageIconオブジェクトを作成
        ImageIcon icon = new ImageIcon("sample.png");

        // JLabelにImageIconをセット
        JLabel label = new JLabel(icon);

        // JFrameにJLabelを追加
        frame.add(label);

        // JFrameを可視化
        frame.setVisible(true);
    }
}

ImageIO.read()を使用する方法

教授
教授

ImageIOクラスのreadメソッドを使って、画像ファイルからImageオブジェクトを作成できます。
ImageオブジェクトはGraphicsクラスのdrawImageメソッドで描画できます。
コードは次のようになりますよ?

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.io.File;
import java.io.IOException;

public class ImageExample2 extends JPanel {
    private Image img;

    public ImageExample2() {
        try {
            // 画像ファイルからImageオブジェクトを作成
            img = ImageIO.read(new File("sample.png"));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        // Imageオブジェクトを描画
        g.drawImage(img, 0, 0, this);
    }

    public static void main(String[] args) {
        JFrame frame = new JFrame("画像表示");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300, 300);

        // JPanelのサブクラスのインスタンスを作成
        ImageExample2 panel = new ImageExample2();

        // JFrameにJPanelを追加
        frame.add(panel);

        // JFrameを可視化
        frame.setVisible(true);
    }
}

Toolkit.getImage()を使用する方法

教授
教授

ToolkitクラスのgetImageメソッドを使って、画像ファイルからImageオブジェクトを作成できます。
ImageオブジェクトはGraphicsクラスのdrawImageメソッドで描画できます。
コードは次のようになりますよ?

import javax.swing.*;
import java.awt.*;

public class ImageExample3 extends JPanel {
    private Image img;

    public ImageExample3() {
        // 画像ファイルからImageオブジェクトを作成
        img = Toolkit.getDefaultToolkit().getImage("sample.png");
    }

    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        // Imageオブジェクトを描画
        g.drawImage(img, 0, 0, this);
    }

    public static void main(String[] args) {
        JFrame frame = new JFrame("画像表示");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300, 300);

        // JPanelのサブクラスのインスタンスを作成
        ImageExample3 panel = new ImageExample3();

        // JFrameにJPanelを追加
        frame.add(panel);

        // JFrameを可視化
        frame.setVisible(true);
    }
}
教授
教授

いかがでしょうか。
役に立ちましたか?

生徒
生徒

ありがとうございます!
早速、お気に入りのイケメンの画像を表示させてみたいと思います。

教授
教授

それは、わざわざありがとうございます。
しかし、もう少し人生の勉強が必要なのでは?

タイトルとURLをコピーしました