这个代码是使用 Java Swing 编写的,获取当前系统中的所有字体,没有第三方Jar包,Eclipse 可以直接运行。
下图是软件运行界面
以下是运行源码
package fonts;
import java.awt.GraphicsEnvironment;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Enumeration;import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.LayoutStyle.ComponentPlacement;
import javax.swing.UIManager;
import javax.swing.table.DefaultTableModel;/**
* @date 2019年8月23日09:54:09 查询系统中的所有字体
* @date 2022年9月23日18:36:18 修复了获取字体时出现错误的原因
* @author 莱迪娜的风声
*/
public class FontSet extends JPanel {
private JTable table;public FontSet() {
JScrollPane scrollPane = new JScrollPane();
JButton btnNewButton = new JButton("GetALL");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 获取系统中可用的字体的名字
GraphicsEnvironment e1 = GraphicsEnvironment.getLocalGraphicsEnvironment();
String[] fontName = e1.getAvailableFontFamilyNames();
table = new JTable();
Object[][] obj = new Object[fontName.length][2];
for (int i = 0; i < fontName.length; i++) {
obj[i][0] = String.valueOf(i);
obj[i][1] = fontName[i];
System.out.println(obj[i][0] + " " + obj[i][1]);
}
DefaultTableModel defaultTableModel = new DefaultTableModel(obj,
new String[] { "\u5E8F\u53F7", "\u5B57\u7B26\u7F16\u7801" });
table.setModel(defaultTableModel);
scrollPane.setViewportView(table);
}
});
GroupLayout groupLayout = new GroupLayout(this);
groupLayout.setHorizontalGroup(groupLayout.createParallelGroup(Alignment.LEADING).addGroup(Alignment.TRAILING,
groupLayout.createSequentialGroup().addGap(19)
.addComponent(scrollPane, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,
GroupLayout.PREFERRED_SIZE)
.addPreferredGap(ComponentPlacement.RELATED, 105, Short.MAX_VALUE).addComponent(btnNewButton)
.addGap(69)));
groupLayout
.setVerticalGroup(
groupLayout.createParallelGroup(Alignment.TRAILING)
.addGroup(groupLayout.createSequentialGroup()
.addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(groupLayout.createParallelGroup(Alignment.TRAILING)
.addComponent(scrollPane, GroupLayout.PREFERRED_SIZE, 477,
GroupLayout.PREFERRED_SIZE)
.addComponent(btnNewButton))
.addGap(65)));table = new JTable();
table.setModel(new DefaultTableModel(new Object[][] { { null, null } },
new String[] { "\u5E8F\u53F7", "\u5B57\u7B26\u7F16\u7801" }));
table.getColumnModel().getColumn(0).setPreferredWidth(15);
table.getColumnModel().getColumn(0).setMinWidth(5);
table.getColumnModel().getColumn(1).setPreferredWidth(200);
scrollPane.setViewportView(table);
setLayout(groupLayout);}
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.getContentPane().add(new FontSet());
frame.setTitle("FontSetPanel");
frame.setSize(1200, 800);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}public String make(int k) {
String s = "";
for (int i = 0; i < k; i++) {
s += " ";
}
return s;
}public void getAllControl() {
Enumeration<?> keys = UIManager.getDefaults().keys();
while (keys.hasMoreElements()) {
Object key = keys.nextElement();
Object value = UIManager.get(key);
if (value instanceof javax.swing.plaf.FontUIResource) {
int k = 40 - key.toString().length();
String s = make(k) + key.toString();
System.out.println(s + " , " + value.toString().substring(17));
}
}
}
}
希望大家能够喜欢,Java ,热爱,热爱你的生活。
以上代码由本人编辑并进行测试完毕。