A Font List
Home ] Up ] A Color-Rendered List ] [ A Font List ] A Font-Rendered List ]

 

 

Here's another example.  We wish to display a JList that will eventually display the selected font in its own rendition.

First, let's implement such an application in the "dumb" way:

package swingExamples;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GraphicsEnvironment;

import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;

import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

public class JListFontSelector1 extends JFrame
{
  public JListFontSelector1()
  {
    setTitle("JListFontSelector1");
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    getContentPane().add( new JListFontPanel() );
    pack();
  }
  
  //// Inner classes ////
  class JListFontPanel extends JPanel 
      implements ListSelectionListener
  {
    JListFontPanel()
    {
      setLayout( new BorderLayout() );
      
      JPanel listPanel = new JPanel();
      m_list.setSelectedIndex(0);
      m_list.addListSelectionListener(this);
      listPanel.add( new JScrollPane(m_list) );
      add(listPanel, BorderLayout.SOUTH);
      
      JPanel fontPanel = new JPanel();
      fontPanel.setPreferredSize( new Dimension(500, 50) );
      fontPanel.setBackground(Color.WHITE);
      fontPanel.setBorder( 
          BorderFactory.createCompoundBorder(
            BorderFactory.createEmptyBorder(5, 5, 5, 5),
            BorderFactory.createLineBorder(Color.BLUE) 
            ) );
      String fontName = 
          (String) m_list.getSelectedValue();
      m_fontLabel.setFont( 
          new Font(fontName, Font.PLAIN, 16) );
      fontPanel.add(m_fontLabel);
      add(fontPanel, BorderLayout.NORTH);
    }
    
    public void valueChanged(ListSelectionEvent e)
    {
      JList source = (JList) e.getSource();
      String fontName = (String) source.getSelectedValue();
      m_fontLabel.setFont( 
          new Font(fontName, Font.PLAIN, 16) );
    }
    
    private JList  m_list = new JList(FONT_NAMES);
    private JLabel m_fontLabel = 
        new JLabel(
        "The quick brown fox jumps over the lazy dog");
  }
  
  private static final String[] FONT_NAMES =
      GraphicsEnvironment.getLocalGraphicsEnvironment()
                         .getAvailableFontFamilyNames();
  
  /**
   * Main entry point for program
   */
  public static void main(String[] args)
  {
    JListFontSelector1 frame = new JListFontSelector1();
    frame.setVisible(true);
  }
}

which displays as follows:

 

This page was last modified on 02 October, 2007