Java Swing 窗体添加文字

如何在 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());
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值