绘制文本
Java 绘图类也可以用来绘制文本内容,且可以在绘制前设置字体的样式、大小等。本节将讲解如何绘制文本和设置文本的字体。
设置字体
Java 使用 Font 类封装了字体的大小、样式等属性,该类在 java.awt 包中被定义,其构造方法可以指定字体的名称、大小和样式 3 个属性。语法如下:
Font(String name, int style, int size)
-
name:字体的名称。
-
style:字体的样式。
-
size:字体的大小。
其中,字体样式可以使用 Font 类的 PLAIN、BOLD 和 ITALIC 常量,效果如图19.9所示。

设置绘图类的字体可以使用绘图类的 setFont() 方法。设置字体以后在图形上下文中绘制的所有文字都使用该字体,除非再次设置其他字体。语法如下:
setFont(Font font)
其中,参数 font 是 Font 类的字体对象。
显示文字
Graphics2D 类提供了 drawString() 方法,该方法可用于实现图形上下文的文本绘制,从而实现在图片上显示文字的功能。语法格式有如下两种:
drawString(String str, int x, int y)
drawString(String str, float x, float y)
-
str:要绘制的文本字符串。
-
x:绘制字符串的水平起始位置。
-
y:绘制字符串的垂直起始位置。
这两个方法唯一不同的就是x和y的参数类型不同。
【例19.3】绘制文字钟表(实例位置:资源包\TM\sl\19\3)
绘制一个矩形图,在矩形图的中间显示文本,文本的内容是当前时间。
import java.awt.*;
import java.awt.geom.Rectangle2D;
import java.util.Date;
import javax.swing.*;
public class DrawString extends JFrame {
public DrawString() {
setSize(230, 140); // 设置窗体大小
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 设置窗体关闭模式
add(new CanvasPanel()); // 设置窗体面板为绘图面板对象
setTitle("绘图文本"); // 设置窗体标题
}
class CanvasPanel extends JPanel {
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
Rectangle2D rect = new Rectangle2D.Double(10, 10, 200, 80);
Font font = new Font("宋体", Font.BOLD, 16);
Date date = new Date();
g2.setColor(Color.CYAN); // 设置当前绘图颜色
g2.fill(rect); // 填充矩形
g2.setColor(Color.BLUE); // 设置当前绘图颜色
g2.setFont(font); // 设置字体
g2.drawString("现在时间是", 20, 30); // 绘制文本
g2.drawString(String.format("%tr", date), 50, 60); // 绘制时间文本
}
}
public static void main(String[] args) {
new DrawString().setVisible(true);
}
}
运行结果如图19.10所示。

编程训练(答案位置:资源包\TM\sl\19\编程训练)
【训练5】模拟公章 公章是指机关、团体、企事业单位使用的印章。公章的印文自左而右环行,使用简化的宋体字。使用AWT的相关技术,在窗体中绘制一个公章,效果如图19.11所示。
【训练6】水印文字 网络上的图文资源丰富,为了维护正版,各个网站采用了为这些图文资源加水印文字特效的方法。使用AWT的相关技术,为图片加上“盗版必究”的水印效果,如图19.12所示。

