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

时间:2023-03-09 23:56:31
[JAVA] java_实例 获得系统字体

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

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

 import java.awt.*;
import java.awt.event.*; import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel; public class GetSystemFont extends JFrame { private JComboBox box;
private Container container;
private String str[];
private GraphicsEnvironment environment; // 该类中又获取系统字体的方法;
private JLabel tipLabel; public GetSystemFont() {
super("获取系统字体");
container = getContentPane();
tipLabel = new JLabel("系统字体有:");
container.add(tipLabel); environment = GraphicsEnvironment.getLocalGraphicsEnvironment();// GraphicsEnvironment是一个抽象类,不能实例化,只能用其中的静态方法获取一个实例
str = environment.getAvailableFontFamilyNames();// 获取系统字体 box = new JComboBox(str); // 为box注册ItemListener监听器
box.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent event) {
if (event.getStateChange() == event.SELECTED) {
int style = tipLabel.getFont().getStyle(); // 获取当前字体的类型
int size = tipLabel.getFont().getSize();// 获取当前字体的大小
tipLabel.setFont(new Font(str[box.getSelectedIndex()],
style, size));// 改变tipLabel的字体,但不改变大小和类型
}
}
}); container.setLayout(new FlowLayout());
container.add(box); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
pack();
setResizable(false); // 使窗口屏幕居中
Toolkit kit = Toolkit.getDefaultToolkit();// 抽象类,通过静态方法获取实例
Dimension frameSize = new Dimension(), screenSize = kit.getScreenSize(); // 获取屏幕的大小
getSize(frameSize); // 获取窗口大小
setLocation((screenSize.width - frameSize.width) / 2,
(screenSize.height - frameSize.height) / 2);
} public static void main(String[] args) {
GetSystemFont test = new GetSystemFont();
}
}