[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 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?