Java如何正确调用操作系统默认字体设置在窗口中显示?
- 后端开发
- 2025-10-14
- 5
在Java中,要使用系统字体设置窗口,可以通过以下几种方式实现:
使用GraphicsEnvironment类
GraphicsEnvironment类提供了访问本地图形环境的接口,其中包括获取系统字体列表的功能。
步骤:
- 获取GraphicsEnvironment实例。
- 使用getAvailableFontFamilyNames()方法获取所有可用的字体名称。
- 使用getAvailableFontStyles()方法获取每个字体的样式。
- 使用getFontList()方法获取系统字体列表。
示例代码:
import java.awt.GraphicsEnvironment; public class SystemFontExample { public static void main(String[] args) { GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); String[] fontNames = ge.getAvailableFontFamilyNames(); for (String fontName : fontNames) { System.out.println("Font Name: " + fontName); String[] fontStyles = ge.getAvailableFontStyles(fontName); for (String style : fontStyles) { System.out.println("Style: " + style); } } } }
使用Font类
Font类代表一个字体,可以通过Font类的构造函数创建一个字体对象。
步骤:
- 使用Font类的构造函数创建一个字体对象。
- 使用getFontList()方法获取系统字体列表。
示例代码:
import java.awt.Font; import java.awt.GraphicsEnvironment; public class SystemFontExample { public static void main(String[] args) { GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); Font[] fonts = ge.getFontList(); for (Font font : fonts) { System.out.println("Font Name: " + font.getName()); System.out.println("Font Style: " + font.getStyle()); System.out.println("Font Size: " + font.getSize()); } } }
使用JFrame和JLabel
通过创建一个JFrame窗口和一个JLabel标签,并设置标签的字体为系统字体。
步骤:
- 创建一个JFrame实例。
- 创建一个JLabel实例。
- 设置JLabel的字体为系统字体。
- 将JLabel添加到JFrame中。
- 显示JFrame。
示例代码:
import javax.swing.JFrame; import javax.swing.JLabel; import java.awt.Font; import java.awt.GraphicsEnvironment; public class SystemFontExample { public static void main(String[] args) { JFrame frame = new JFrame("System Font Example"); JLabel label = new JLabel("Hello, World!"); GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); Font font = new Font(ge.getDefaultFont().getName(), Font.PLAIN, 24); label.setFont(font); frame.add(label); frame.setSize(300, 100); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } }
表格对比
| 方法 | 优点 | 缺点 |
|---|---|---|
| GraphicsEnvironment | 提供更多字体信息 | 代码相对复杂 |
| Font | 简单易用 | 代码相对复杂 |
| JFrame和JLabel | 可视化展示 | 仅适用于GUI程序 |
FAQs
Q1:如何获取系统字体的名称和样式?
A1: 可以使用GraphicsEnvironment类中的getAvailableFontFamilyNames()方法获取所有可用的字体名称,然后使用getAvailableFontStyles()方法获取每个字体的样式。
Q2:如何将系统字体应用到JLabel上?
A2: 创建一个JLabel实例,然后使用setFont()方法设置其字体,可以通过GraphicsEnvironment类获取系统字体,并将其应用到JLabel上。
JLabel label = new JLabel("Hello, World!"); GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); Font font = new Font(ge.getDefaultFont().getName(), Font.PLAIN, 24); label.setFont(font);