获取系统中的所有字体并使用Java Swing 显示在界面中

这个代码是使用 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 ,热爱,热爱你的生活。

以上代码由本人编辑并进行测试完毕。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

莱迪娜的风声

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值