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);
}
}
教授
いかがでしょうか。
役に立ちましたか?
生徒
ありがとうございます!
早速、お気に入りのイケメンの画像を表示させてみたいと思います。
教授
それは、わざわざありがとうございます。
しかし、もう少し人生の勉強が必要なのでは?