[JAVA] java_实例 获得系统字体

这个代码可以帮助理解java是如何获取系统字体并设置文字字体:

复制代码
 1 import java.awt.*;
 2 import java.awt.event.*;
 3 
 4 import javax.swing.JComboBox;
 5 import javax.swing.JFrame;
 6 import javax.swing.JLabel;
 7 
 8 public class GetSystemFont extends JFrame {
 9 
10     private JComboBox box;
11     private Container container;
12     private String str[];
13     private GraphicsEnvironment environment; // 该类中又获取系统字体的方法;
14     private JLabel tipLabel;
15 
16     public GetSystemFont() {
17         super("获取系统字体");
18         container = getContentPane();
19         tipLabel = new JLabel("系统字体有:");
20         container.add(tipLabel);
21 
22         environment = GraphicsEnvironment.getLocalGraphicsEnvironment();// GraphicsEnvironment是一个抽象类,不能实例化,只能用其中的静态方法获取一个实例
23         str = environment.getAvailableFontFamilyNames();// 获取系统字体
24 
25         box = new JComboBox(str);
26 
27         // 为box注册ItemListener监听器
28         box.addItemListener(new ItemListener() {
29             public void itemStateChanged(ItemEvent event) {
30                 if (event.getStateChange() == event.SELECTED) {
31                     int style = tipLabel.getFont().getStyle(); // 获取当前字体的类型
32                     int size = tipLabel.getFont().getSize();// 获取当前字体的大小
33                     tipLabel.setFont(new Font(str[box.getSelectedIndex()],
34                             style, size));// 改变tipLabel的字体,但不改变大小和类型
35                 }
36             }
37         });
38 
39         container.setLayout(new FlowLayout());
40         container.add(box);
41 
42         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
43         setVisible(true);
44         pack();
45         setResizable(false);
46 
47         // 使窗口屏幕居中
48         Toolkit kit = Toolkit.getDefaultToolkit();// 抽象类,通过静态方法获取实例
49         Dimension frameSize = new Dimension(), screenSize = kit.getScreenSize(); // 获取屏幕的大小
50         getSize(frameSize); // 获取窗口大小
51         setLocation((screenSize.width - frameSize.width) / 2,
52                 (screenSize.height - frameSize.height) / 2);
53     }
54 
55     public static void main(String[] args) {
56         GetSystemFont test = new GetSystemFont();
57     }
58 }
复制代码

 

 

posted @   beautifulzzzz  阅读(4218)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示