显示图片
绘图类不仅可以绘制图形和文本,还可以使用 drawImage() 方法将图片资源显示到绘图上下文中,而且可以实现各种特效处理,如图片的缩放、翻转等。有关图像处理的知识将在19.6节讲解,本节主要讲解如何显示图片。语法如下:
drawImage(Image img, int x, int y, ImageObserver observer)
该方法将 img 图片显示在 x、y 指定的位置上。方法中涉及的参数及其说明如表19.4所示。

Figure 1. 表19.4 drawImage()方法的参数说明
drawImage() 方法的使用与绘制文本的 drawString() 方法类似,唯一不同的是该方法需要指定要通知的图像观察者。
【例19.4】在窗体中显示照片(实例位置:资源包\TM\sl\19\4)
在整个窗体中显示图片,图片的大小保持不变。
import java.awt.*;
import java.io.*;
import javax.imageio.ImageIO;
import javax.swing.*;
public class DrawImage extends JFrame {
Image img;// 展示的图片
public DrawImage() {
try {
img = ImageIO.read(new File("src/img.jpg"));// 读取图片文件
} catch (IOException e) {
e.printStackTrace();
}
setSize(440, 300); // 设置窗体大小
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 设置窗体关闭模式
add(new CanvasPanel()); // 设置窗体面板为绘图面板对象
setTitle("绘制图片"); // 设置窗体标题
}
class CanvasPanel extends JPanel {
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
g2.drawImage(img, 0, 0, this); // 显示图片
}
}
public static void main(String[] args) {
new DrawImage().setVisible(true);
}
}
运行结果如图19.13所示。

Figure 2. 图19.13 显示图片的窗体
编程训练(答案位置:资源包\TM\sl\19\编程训练)
【训练7】照片浏览器 尝试在窗体中显示你自己的照片。
【训练8】相册浏览器 在一个窗体中并排显示两张照片。