The complete list of fonts appears on the Java console. The floowing application allows you to browse the fonts.
The Java code of this app follows:
Java Code |
---|
import javax.swing.*; import java.awt.event.*; import java.awt.*; public class Fonts2 { public static void main(String[] args) { SwingApp app = new SwingApp(300, 200); // set app window size app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } class SwingApp extends JFrame implements ActionListener { private int fontNumber = 0; private final DrawPanel panel; // class variable private final String[] availFonts; private final JLabel jl0, jl1, jl2, jl3; private final JButton jb1, jb2; public SwingApp(int width, int height) // class constructor { super(); // call to super class constructor Container pane = super.getContentPane(); // create layout, set colors panel = new DrawPanel(); // add GUI components panel.setBackground(Color.yellow); panel.setLayout(new GridLayout(5,1)); GraphicsEnvironment gg=GraphicsEnvironment.getLocalGraphicsEnvironment(); availFonts = gg.getAvailableFontFamilyNames(); jl0 = new JLabel("Total number of fonts: " + availFonts.length, SwingConstants.CENTER); for (int i=0; i<availFonts.length; i++) System.out.println(availFonts[i]); jl1 = new JLabel("", SwingConstants.CENTER); jl1.setFont(new Font("Monospaced", Font.PLAIN, 16)); jl2 = new JLabel("", SwingConstants.CENTER); jl3 = new JLabel("", SwingConstants.CENTER); setLabels(0); panel.add(jl0); panel.add(jl1); panel.add(jl3); panel.add(jl2); JPanel jp = new JPanel(); jp.setLayout(new GridLayout(1,2)); jb1 = new JButton("Prev font"); jb2 = new JButton("Next font"); jp.add(jb1); jp.add(jb2); panel.add(jp); jb1.addActionListener(this); jb2.addActionListener(this); pane.add(panel); Toolkit toolkit = Toolkit.getDefaultToolkit(); // optionally position JFrame Dimension screenSize = toolkit.getScreenSize(); // in the middle of the screen super.setLocation((screenSize.width - width)/2, (screenSize.height - height)/2); super.setTitle("Swing app"); // set desired window title super.setSize(width, height); // set desired window size super.setVisible(true); // add here more code for GUI components } @Override public void actionPerformed(ActionEvent e) { if (e.getSource() == jb1) { fontNumber--; if (fontNumber < 0) fontNumber = availFonts.length + fontNumber; } else if (e.getSource() == jb2) fontNumber = (fontNumber + 1) % availFonts.length; setLabels(fontNumber); panel.repaint(); } public final void setLabels(int n) { jl1.setText((n+1) + ": \"" + availFonts[n] + "\""); jl2.setText(availFonts[n]); Font font = new Font(availFonts[n], Font.PLAIN, 24); jl2.setFont(new Font(availFonts[n], Font.PLAIN, 24)); FontMetrics fm = panel.getFontMetrics(font); jl3.setText("(l, a, d, h) = (" + fm.getLeading() + ", " + fm.getAscent() + ", " + fm.getDescent() + ", " + fm.getHeight() + ")"); } } class DrawPanel extends JPanel // main window panel { @Override public void paintComponent(Graphics g) { super.paintComponent(g); // must be the 1st line // add here more code for drawing on panel } } |