Home >Java >javaTutorial >How can I programmatically list and preview available fonts in a Java application?

How can I programmatically list and preview available fonts in a Java application?

DDD
DDDOriginal
2024-10-31 11:12:011066browse

How can I programmatically list and preview available fonts in a Java application?

Getting Information About Fonts

In Java, you can access system fonts through the GraphicsEnvironment class. To obtain an array of all available font family names, use the following code:

<code class="java">GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
String[] fonts = ge.getAvailableFontFamilyNames();</code>

Font sizes and styles can be set dynamically during runtime. Consider the following example, which displays a font chooser with a preview of each font:

<code class="java">import java.awt.*;
import javax.swing.*;

public class ShowFonts {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
            String[] fonts = ge.getAvailableFontFamilyNames();
            JComboBox fontChooser = new JComboBox(fonts);
            fontChooser.setRenderer(new FontCellRenderer());
            JOptionPane.showMessageDialog(null, fontChooser);
        });
    }
}

class FontCellRenderer extends DefaultListCellRenderer {

    @Override
    public Component getListCellRendererComponent(
            JList list,
            Object value,
            int index,
            boolean isSelected,
            boolean cellHasFocus) {
        JLabel label = (JLabel) super.getListCellRendererComponent(
                list, value, index, isSelected, cellHasFocus);
        Font font = new Font(value.toString(), Font.PLAIN, 20);
        label.setFont(font);
        return label;
    }
}</code>

Additional Resources

  • GraphicsEnvironment.getAvailableFontFamilyNames(): https://docs.oracle.com/javase/7/docs/api/java/awt/GraphicsEnvironment.html#getAvailableFontFamilyNames()
  • DefaultListCellRenderer: https://docs.oracle.com/javase/8/docs/api/javax/swing/DefaultListCellRenderer.html
  • Font Chooser: https://docs.oracle.com/javase/tutorial/uiswing/components/combobox.html#font_fonts

The above is the detailed content of How can I programmatically list and preview available fonts in a Java application?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn