Hace un tiempo, respondí una pregunta de desbordamiento de pila sobre una fuente que mostraba incorrectamente una palabra en el idioma LAO. Escribí una GUI swing para responder a la pregunta de desbordamiento de pila.
Si no está familiarizado con Java Swing, Oracle tiene un excelente tutorial para comenzar, creando una GUI con JFC/Swing. Omita la sección NetBeans.
Decidí escribir una GUI selectora de fuentes más general por dos razones.
Quería elegir una fuente de guiones para una GUI diferente que estaba creando. Tuve que usar OpenOffice para mirar mis fuentes disponibles.
Pensé que sería una buena aplicación de swing para GitHub.
Aquí está la GUI selectora de fuentes que muestra qué fuentes en mi computadora muestran una frase en inglés. Tengo 432 variaciones de fuentes que pueden mostrar el texto de muestra del JTextfield.

En la parte superior de la GUI, puede escribir o copiar / pegar texto de muestra. Puede seleccionar entre varios tamaños de fuentes comunes. Después de hacer clic izquierdo en las fuentes de pantalla JButton, ve una muestra de cada fuente y en la parte superior, el número total de fuentes disponibles que Java reconoce.
Aquí está la GUI selectora de fuentes que muestra qué fuentes en mi computadora muestran una palabra en el idioma LAO. Puede ver los cuadros en el texto de muestra JTextfield. Mi fuente de GUI de swing predeterminada no puede mostrar la palabra. Solo 11 variaciones de fuentes en mi sistema pueden, y solo la fuente deJavu puede mostrar la palabra con los glifos en la posición correcta.

La GUI swing consta de cuatro clases; FontSelectorGui, FonttableCellRenderer, FontDisplayListener y FontDisplayRunnable.
La clase FontSelectorGui es la clase GUI principal. JFRame, Entry JPanel y Display JPanel se crean en esta clase. El JFRame se crea en el método Run, y los JPanels se crean en métodos separados. La entrada JPanel usa un BoxLayout, mientras que la pantalla JPanel usa un BorderLayout.
La clase FonttableCellRenderer es la clase de renderizador de células JTable responsable de hacer que las células JTABLE en las diferentes fuentes.
La clase FontDisplayListener responde al JButton de la entrada JPanel. Debido a que la creación de las filas jtables lleva un tiempo, un fontdisplayrunnable separado actualiza las filas jtables en un hilo separado. Hacer esto mantiene la GUI sensible.