org.xnap.gui.component
Class FontSelectionPanel

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JPanel
                  extended by org.xnap.gui.component.FontSelectionPanel
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible

public class FontSelectionPanel
extends javax.swing.JPanel

A component which allows a user to select a font. Here is a code sample demonstrating its use:

 import java.awt.*;
 import java.awt.event.*;
 import javax.swing.*;
 
 public class FontSelectionPanelDemo {
   public static void main (String[] args) {
     final JFrame frame = new JFrame();
     JPanel panel = new JPanel(new BorderLayout());
     final FontSelectionPanel fontSelectionPanel = new FontSelectionPanel(
       new Font("Times New Roman", Font.BOLD+Font.ITALIC, 14)
     );
     panel.add(fontSelectionPanel, BorderLayout.CENTER);
     JButton button = new JButton("OK");
     button.addActionListener(new ActionListener () {
       public void actionPerformed (ActionEvent e) {
         try {
           JOptionPane.showMessageDialog(
             frame, 
             "Selected font is: " + fontSelectionPanel.getSelectedFont(),
             "Selected Font",
             JOptionPane.INFORMATION_MESSAGE
           );
         }
         catch (FontSelectionPanel.InvalidFontException ife) {
           JOptionPane.showMessageDialog(
             frame, 
             "You have not selected a valid font",
             "Invalid Font",
             JOptionPane.ERROR_MESSAGE
           );
         }
       }
     });
     panel.add(button, BorderLayout.SOUTH);
     frame.setContentPane(panel);
     frame.addWindowListener(new WindowAdapter () {
       public void windowClosing (WindowEvent e) { System.exit(0); }
     });
     frame.pack();
     frame.show();
   }
 }

Version History:

1.1 (August 19, 2000)
protected access to all major components now provided for the benefit of subclasses
Added methods
setSelectedFont(java.awt.Font), setSelectedFontFamily(String), setSelectedFontStyle(int), setSelectedFontSize(int)
GridBag fill strategy modified slightly to improve resizing behavior
Changed sample code to use BorderLayout
Added version history to javadocs
1.0 (August 15, 2000)
Initial release

Copyright (C) 2000 Greg Merrill ( greghmerrill@yahoo.com). Distributed under the terms of the GNU General Public License (version 2). For details on the GNU GPL, please visit http://www.gnu.org/copyleft/gpl.html. To find out more about this and other free software by Greg Merrill, please visit http://gregmerrill.imagineis.com

Version:
1.1
Author:
Greg Merrill
See Also:
Serialized Form

Nested Class Summary
protected  class FontSelectionPanel.FontSizeSynchronizer
          This class synchronizes font size value between the list containing available font sizes & the text field in which font size is ultimately specified.
protected static class FontSelectionPanel.FontStyleList
          Represents a list of the four font styles: plain, bold, italic, and bold italic
static class FontSelectionPanel.InvalidFontException
          Indicates that an invalid font is currently specified
static class FontSelectionPanel.InvalidFontSizeException
          Indicates that an invalid font size is currently specified
protected static class FontSelectionPanel.ListCellRenderer
          An implementation of ListCellRenderer which right justifies all cells.
static class FontSelectionPanel.NoFontFamilySelectedException
          Indicates that no font family is currently selected
static class FontSelectionPanel.NoFontSizeSpecifiedException
          Indicates that no font size is currently specified
static class FontSelectionPanel.NoFontStyleSelectedException
          Indicates that no font style is currently selected
static class FontSelectionPanel.PhraseCanvas
          Component for displaying a "phrase" (a brief, one or two word String) using a particular font & a particular color.
protected static class FontSelectionPanel.PublicChangeObservable
          Subclass of Observable which allows public access to the setChanged() method.
 
Nested classes/interfaces inherited from class javax.swing.JPanel
javax.swing.JPanel.AccessibleJPanel
 
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
Nested classes/interfaces inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
protected  javax.swing.JList fontFamilyList_
          JList for font family
protected  javax.swing.JTextField fontSize_
          JTextField for font size
protected  javax.swing.JList fontSizeList_
          JList for font size
protected  FontSelectionPanel.FontStyleList fontStyleList_
          FontStlyeList (subclass of JList) for font style
protected  int maxNumCharsInFontSize_
          Maximum number of characters permissibile in a valid font size
protected  FontSelectionPanel.PublicChangeObservable observable_
          Observable used for registering/notifying Observers
protected  FontSelectionPanel.PhraseCanvas phraseCanvas_
          PhraseCanvas in which font samples are displayed
 
Fields inherited from class javax.swing.JComponent
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
FontSelectionPanel()
          Like FontSelectionPanel(java.awt.Font), except an initialFont of null will be used.
FontSelectionPanel(java.awt.Font initialFont)
          Like FontSelectionPanel(java.awt.Font, String[], int[]), except that a default list of styles ({"Plain", "Bold", "Italic", "Bold Italic"}) and font sizes ({8, 9, 10, 12, 14}) will be used.
FontSelectionPanel(java.awt.Font initialFont, java.lang.String[] styleDisplayNames, int[] predefinedSizes)
          Construct a new FontSelectionPanel whose family, style & size widget selections are set according to the supplied initial Font.
 
Method Summary
 void addObserver(java.util.Observer o)
          Adds an Observer to this FontSelectionPanel; the supplied Observer will have its update() method called any time the Font currently specified in the FontSelectionPanel changes.
 void deleteObserver(java.util.Observer o)
          Removes an Observer from this FontSelectionPanel.
 java.awt.Font getSelectedFont()
          Returns the currently selected font.
 java.lang.String getSelectedFontFamily()
          Returns the currently selected font family
 int getSelectedFontSize()
          Returns the currently selected font size.
 int getSelectedFontStyle()
          Returns the currently selected font style.
 void setSelectedFont(java.awt.Font font)
          Changes the currently selected font by assigning all widget values to match the family/style/size values of the supplied font
 void setSelectedFontFamily(java.lang.String family)
          Sets the currently selected font family.
 void setSelectedFontSize(int size)
          Sets the currently selected font size.
 void setSelectedFontStyle(int style)
          Sets the currently selected font style.
 
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusBackward, transferFocusDownCycle, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

fontFamilyList_

protected javax.swing.JList fontFamilyList_
JList for font family


fontStyleList_

protected FontSelectionPanel.FontStyleList fontStyleList_
FontStlyeList (subclass of JList) for font style


fontSize_

protected javax.swing.JTextField fontSize_
JTextField for font size


fontSizeList_

protected javax.swing.JList fontSizeList_
JList for font size


phraseCanvas_

protected FontSelectionPanel.PhraseCanvas phraseCanvas_
PhraseCanvas in which font samples are displayed


observable_

protected FontSelectionPanel.PublicChangeObservable observable_
Observable used for registering/notifying Observers


maxNumCharsInFontSize_

protected int maxNumCharsInFontSize_
Maximum number of characters permissibile in a valid font size

Constructor Detail

FontSelectionPanel

public FontSelectionPanel()
Like FontSelectionPanel(java.awt.Font), except an initialFont of null will be used.


FontSelectionPanel

public FontSelectionPanel(java.awt.Font initialFont)
Like FontSelectionPanel(java.awt.Font, String[], int[]), except that a default list of styles ({"Plain", "Bold", "Italic", "Bold Italic"}) and font sizes ({8, 9, 10, 12, 14}) will be used.

Parameters:
initialFont - see FontSelectionPanel(java.awt.Font, String[], int[])

FontSelectionPanel

public FontSelectionPanel(java.awt.Font initialFont,
                          java.lang.String[] styleDisplayNames,
                          int[] predefinedSizes)
Construct a new FontSelectionPanel whose family, style & size widget selections are set according to the supplied initial Font. Additionally, the style & size values available will be dictated by the values in styleDisplayNames and predefinedSizes, respectively.

Parameters:
initialFont - the newly constructed FontSelectionPanel's family, style, and size widgets will be set according to this value. This value may be null, in which case an initial font will be automatically created. This auto-created font will have a family, style, and size corresponding to the first avaiable value in the widget form family, style, and size respectively.
styleDisplayNames - must contain exactly four members. The members of this array represent the following styles, in order: Font.PLAIN, Font.BOLD, Font.ITALIC, and Font.BOLD+Font.ITALIC
predefinedSizes - must contain one or more predefined font sizes which will be available to the user as a convenience for populating the font size text field; all values must be greater than 0.
Method Detail

addObserver

public void addObserver(java.util.Observer o)
Adds an Observer to this FontSelectionPanel; the supplied Observer will have its update() method called any time the Font currently specified in the FontSelectionPanel changes. (The arg supplied to the Observer will be null.)

Parameters:
o - observer to be added
See Also:
Observer

deleteObserver

public void deleteObserver(java.util.Observer o)
Removes an Observer from this FontSelectionPanel.

Parameters:
o - Observer to be removed
See Also:
Observer

getSelectedFontFamily

public java.lang.String getSelectedFontFamily()
                                       throws FontSelectionPanel.NoFontFamilySelectedException
Returns the currently selected font family

Returns:
currently selected font family
Throws:
FontSelectionPanel.NoFontFamilySelectedException - thrown if no font family is currently selected

getSelectedFontStyle

public int getSelectedFontStyle()
                         throws FontSelectionPanel.NoFontStyleSelectedException
Returns the currently selected font style.

Returns:
currently selected font style. This value will correspond to one of the font styles specified in Font
Throws:
FontSelectionPanel.NoFontStyleSelectedException - thrown if no font style is currently selected

getSelectedFontSize

public int getSelectedFontSize()
                        throws FontSelectionPanel.NoFontSizeSpecifiedException,
                               FontSelectionPanel.InvalidFontSizeException
Returns the currently selected font size.

Returns:
currently selected font size.
Throws:
FontSelectionPanel.NoFontSizeSpecifiedException - thrown if no font size is currently specified
FontSelectionPanel.InvalidFontSizeException - thrown if the font size currently specified is invalid

getSelectedFont

public java.awt.Font getSelectedFont()
                              throws FontSelectionPanel.InvalidFontException
Returns the currently selected font.

Returns:
currently selected font.
Throws:
FontSelectionPanel.InvalidFontException - thrown if no valid font is currently specified; the actual class of the exception thrown may be FontSelectionPanel.InvalidFontException, FontSelectionPanel.NoFontFamilySelectedException, FontSelectionPanel.NoFontStyleSelectedException, FontSelectionPanel.NoFontSizeSpecifiedException, or FontSelectionPanel.InvalidFontSizeException

setSelectedFont

public void setSelectedFont(java.awt.Font font)
Changes the currently selected font by assigning all widget values to match the family/style/size values of the supplied font

Parameters:
font - font whose values should be used to set widgets
Throws:
java.lang.IllegalArgumentException - thrown if the family or style of the font supplied are not available or invalid

setSelectedFontFamily

public void setSelectedFontFamily(java.lang.String family)
Sets the currently selected font family.

Parameters:
family - family to which selection should change
Throws:
java.lang.IllegalArgumentException - thrown if the supplied font family is not among the list of available font families

setSelectedFontStyle

public void setSelectedFontStyle(int style)
Sets the currently selected font style.

Parameters:
style - style to which selection should change
Throws:
java.lang.IllegalArgumentException - thrown if the supplied font style is not one of Font.PLAIN, Font.BOLD, Font.ITALIC, or Font.BOLD+Font.ITALIC

setSelectedFontSize

public void setSelectedFontSize(int size)
Sets the currently selected font size.

Parameters:
size - size to which selection should change


Copyright © 2001-2005 XNap Team. All Rights Reserved.