如何在 Java Swing 中添加文字
1.创建 Font 对象:
这里可以指定:
- 字体名称(如 "宋体"、"Arial"、"微软雅黑" 等)
- 字体样式(Font.PLAIN 普通、Font.BOLD 粗体、Font.ITALIC 斜体,或它们的组合)
- 字体大小(以像素为单位)
Font myFont = new Font("宋体", Font.BOLD, 24);
2.设置字体
g2.setFont(myFont);
将创建好的字体应用到 Graphics2D 对象上。
3.绘制文本
g2.drawString("你好,世界!", 100, 150);
参数说明:
- 第一个参数是要显示的文本内容
- 第二个参数是文本起始位置的 X 坐标
- 第三个参数是文本基线的 Y 坐标(注意:这不是文本顶部的 Y 坐标)
增强显示效果
// 设置文本颜色
g2.setColor(Color.RED);
// 启用抗锯齿,让文字更平滑
g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class TextDemo extends JFrame {
public TextDemo() {
// 设置窗体标题
super("Java Swing文字显示示例");
// 设置窗体大小和关闭操作
setSize(600, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 创建自定义面板
JPanel panel = new JPanel() {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
// 启用抗锯齿,让文字更平滑
g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
// 创建不同的字体
Font font1 = new Font("宋体", Font.PLAIN, 20);
Font font2 = new Font("Arial", Font.BOLD, 24);
Font font3 = new Font("微软雅黑", Font.ITALIC, 28);
Font font4 = new Font("楷体", Font.BOLD | Font.ITALIC, 32);
// 设置不同的颜色
g2.setColor(Color.BLUE);
g2.setFont(font1);
g2.drawString("这是宋体普通字体", 50, 50);
g2.setColor(Color.RED);
g2.setFont(font2);
g2.drawString("This is Arial Bold", 50, 100);
g2.setColor(new Color(0, 128, 0)); // 绿色
g2.setFont(font3);
g2.drawString("这是微软雅黑斜体", 50, 160);
g2.setColor(new Color(128, 0, 128)); // 紫色
g2.setFont(font4);
g2.drawString("这是楷体粗斜体", 50, 230);
// 绘制多行文本的技巧
g2.setColor(Color.BLACK);
g2.setFont(new Font("宋体", Font.PLAIN, 16));
String[] lines = {
"这是一个多行文本的示例",
"我们可以通过循环绘制多行文字",
"每行文字的Y坐标需要递增",
"这样就能实现段落显示效果"
};
int y = 280;
for (String line : lines) {
g2.drawString(line, 50, y);
y += 25; // 每行增加25像素的间距
}
}
};
// 添加面板到窗体
add(panel);
// 显示窗体
setLocationRelativeTo(null); // 窗体居中显示
setVisible(true);
}
public static void main(String[] args) {
// 使用SwingUtilities确保在EDT线程中运行GUI代码
SwingUtilities.invokeLater(() -> new TextDemo());
}
}