Некоторое время назад я ответил на вопрос о переполнении стека о шрифте, который неправильно отображал слово на лаосском языке. Я написал качающийся графический интерфейс, чтобы ответить на вопрос переполнения стека.
Если вы не знакомы с Java Swing, у Oracle есть отличное руководство, которое вы начинаете, создав графический интерфейс с JFC/Swing. Пропустите раздел NetBeans.
Я решил написать более общий графический интерфейс селектора шрифтов по двум причинам.
Я хотел выбрать шрифт сценария для другого графического интерфейса, который я создавал. Мне пришлось использовать OpenOffice, чтобы посмотреть на мои доступные шрифты.
Я думал, что это сделает хорошее применение качания для GitHub.
Вот графический интерфейс селектора шрифтов, показывающий, какие шрифты на моем компьютере отображают английскую фразу. У меня есть 432 вариации шрифтов, которые могут отобразить образцы текста из JTextField.

В верхней части графического интерфейса вы можете ввести или скопировать / вставить пример текста. Вы можете выбрать из нескольких общих размеров шрифтов. После того, как вы щелкните левой кнопкой мыши на дисплей-шрифтах Jbutton, вы увидите образец каждого шрифта и сверху, общее количество доступных шрифтов, которые распознает Java.
Вот графический интерфейс селектора шрифтов, показывающий, какие шрифты на моем компьютере отображают слово на лаочном языке. Вы можете увидеть поля в примере текста JTextField. Мой шрифт с графическим интерфейсом по умолчанию не может отобразить слово. Только 11 вариантов шрифта в моей системе могут, и только шрифт Dejavu может отображать слово с глифами в правильном положении.

Свинг -графический интерфейс состоит из четырех классов; Fontselectorgui, fonttablecellrenderer, fontdisplaylister и fontdisplayrunnable.
Класс Fontselectorgui является основным классом GUI. JFRAME, Entry JPanel и Display JPanel созданы в этом классе. JFrame создается в методе прогона, а JPanels создаются отдельными методами. Вход JPanel использует Boxlayout, в то время как дисплей JPanel использует BorderLayout.
Класс FonttableCellRenderer - это класс рендеринга Jtable Cell, ответственный за отмену JTable ячейки в различных шрифтах.
Класс fontdisplaylistener отвечает на Jbutton of a inptranel. Поскольку создание рядов JTable занимает некоторое время, отдельное FontDisplayRunnable обновляет jtable Rows в отдельном потоке. Это делает GUI отзывчивым.