javax.swing
Class LookAndFeel

java.lang.Object
  extended by javax.swing.LookAndFeel
Direct Known Subclasses:
BasicLookAndFeel, MultiLookAndFeel

public abstract class LookAndFeel
extends Object

A look-and-feel controls most aspects of the appearance and operation of user interface components in javax.swing. A cross-platform look-and-feel (the MetalLookAndFeel) is provided.

See Also:
UIManager.getInstalledLookAndFeels(), UIManager.setLookAndFeel(LookAndFeel)

Constructor Summary
LookAndFeel()
           
 
Method Summary
 UIDefaults getDefaults()
          Creates and returns a look-and-feel specific defaults table.
abstract  String getDescription()
          Returns a description of the look and feel.
static Object getDesktopPropertyValue(String systemPropertyName, Object fallbackValue)
          Returns the value of Toolkit.getDefaultToolkit() .getDesktopProperty(systemPropertyName), or fallbackValue if no such property is defined.
abstract  String getID()
          Returns an identifier for the look and feel.
abstract  String getName()
          Returns the name for the look and feel.
 boolean getSupportsWindowDecorations()
          Returns true when the look-and-feel supports window decorations, and false otherwise.
 void initialize()
          Initializes the look-and-feel.
static void installBorder(JComponent c, String defaultBorderName)
          Convenience method for installing a component's default Border object on the specified component if either the border is currently null or already an instance of UIResource.
static void installColors(JComponent c, String defaultBgName, String defaultFgName)
          Convenience method for initializing a component's foreground and background color properties with values from the current defaults table.
static void installColorsAndFont(JComponent component, String defaultBgName, String defaultFgName, String defaultFontName)
          Convenience method for initializing a component's foreground, background and font properties with values from the current defaults table.
static void installProperty(JComponent c, String propertyName, Object value)
          This methods installs a UI property if it hasn't already been set by an application.
abstract  boolean isNativeLookAndFeel()
          Returns true if the look-and-feel is the "native" look-and-feel for the current platform, and false otherwise.
abstract  boolean isSupportedLookAndFeel()
          Returns true if the look-and-feel is supported on the current operating system, and false otherwise.
static void loadKeyBindings(InputMap retMap, Object[] keys)
          Loads the bindings in keys into retMap.
static ComponentInputMap makeComponentInputMap(JComponent c, Object[] keys)
          Creates a ComponentInputMap from keys.
static Object makeIcon(Class<?> baseClass, String gifFile)
          Utility method that creates a UIDefaults.LazyValue that creates an ImageIcon UIResource for the specified gifFile filename.
static InputMap makeInputMap(Object[] keys)
          Creates a InputMap from keys.
static JTextComponent.KeyBinding[] makeKeyBindings(Object[] keyBindingList)
          Convenience method for building lists of KeyBindings.
 void provideErrorFeedback(Component component)
          Invoked when the user attempts an invalid operation.
 String toString()
          Returns a string that displays and identifies this object's properties.
 void uninitialize()
          UIManager.setLookAndFeel calls this method just before we're replaced by a new default look and feel.
static void uninstallBorder(JComponent c)
          Convenience method for un-installing a component's default border on the specified component if the border is currently an instance of UIResource.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

LookAndFeel

public LookAndFeel()
Method Detail

getDefaults

public UIDefaults getDefaults()
Creates and returns a look-and-feel specific defaults table. This method is called once by UIManager.setLookAndFeel(LookAndFeel) and shouldn't be called again (as it creates a large table of defaults).

Returns:
The UI defaults.

getDescription

public abstract String getDescription()
Returns a description of the look and feel.

Returns:
A description of the look and feel.

getDesktopPropertyValue

public static Object getDesktopPropertyValue(String systemPropertyName,
                                             Object fallbackValue)
Returns the value of Toolkit.getDefaultToolkit() .getDesktopProperty(systemPropertyName), or fallbackValue if no such property is defined.

Parameters:
systemPropertyName - the system property name.
fallbackValue - the fallback value.
Returns:
The property value or fallbackValue.

getID

public abstract String getID()
Returns an identifier for the look and feel.

Returns:
An identifier for the look and feel.

getName

public abstract String getName()
Returns the name for the look and feel.

Returns:
The name for the look and feel.

getSupportsWindowDecorations

public boolean getSupportsWindowDecorations()
Returns true when the look-and-feel supports window decorations, and false otherwise. This default implementation always returns false and needs to be overridden when the derived look-and-feel supports this.

Returns:
false.
Since:
1.4

initialize

public void initialize()
Initializes the look-and-feel. The UIManager.setLookAndFeel(LookAndFeel) method calls this method before the first call (and typically the only call) to getDefaults(). This default implementation does nothing, but subclasses can override this behaviour.


installBorder

public static void installBorder(JComponent c,
                                 String defaultBorderName)
Convenience method for installing a component's default Border object on the specified component if either the border is currently null or already an instance of UIResource.

Parameters:
c - the component (null not permitted).
defaultBorderName - the border name (for lookup in the UIDefaults table).

installColors

public static void installColors(JComponent c,
                                 String defaultBgName,
                                 String defaultFgName)
Convenience method for initializing a component's foreground and background color properties with values from the current defaults table.

Parameters:
c - the component (null not permitted).
defaultBgName - the key for the background color in the UIDefaults table.
defaultFgName - the key for the foreground color in the UIDefaults table.

installColorsAndFont

public static void installColorsAndFont(JComponent component,
                                        String defaultBgName,
                                        String defaultFgName,
                                        String defaultFontName)
Convenience method for initializing a component's foreground, background and font properties with values from the current defaults table.

Parameters:
component - the component (null not permitted).
defaultBgName - the key for the background color in the UIDefaults table.
defaultFgName - the key for the foreground color in the UIDefaults table.
defaultFontName - the key for the font in the UIDefaults table.

isNativeLookAndFeel

public abstract boolean isNativeLookAndFeel()
Returns true if the look-and-feel is the "native" look-and-feel for the current platform, and false otherwise. A native look-and-feel emulates the appearance and behaviour of the default windowing system on the host operating system.

Returns:
A flag indicating whether or not this is the native look and feel for the current platform.

isSupportedLookAndFeel

public abstract boolean isSupportedLookAndFeel()
Returns true if the look-and-feel is supported on the current operating system, and false otherwise. This mechanism is provided so that it is possible to prevent a look-and-feel from being used on some operating systems (usually for legal, not technical, reasons).

Returns:
A flag indicating whether or not the look-and-feel is supported on the current platform.

loadKeyBindings

public static void loadKeyBindings(InputMap retMap,
                                   Object[] keys)
Loads the bindings in keys into retMap. Does not remove existing entries from retMap. keys describes the InputMap, every even indexed item is either a KeyStroke or a String representing a KeyStroke and every odd indexed item is the Object associated with that KeyStroke in an ActionMap.

Parameters:
retMap - the InputMap into which we load bindings
keys - the Object array describing the InputMap as above

makeComponentInputMap

public static ComponentInputMap makeComponentInputMap(JComponent c,
                                                      Object[] keys)
Creates a ComponentInputMap from keys. keys describes the InputMap, every even indexed item is either a KeyStroke or a String representing a KeyStroke and every odd indexed item is the Object associated with that KeyStroke in an ActionMap.

Parameters:
c - the JComponent associated with the ComponentInputMap
keys - the Object array describing the InputMap as above
Returns:
A new input map.

makeIcon

public static Object makeIcon(Class<?> baseClass,
                              String gifFile)
Utility method that creates a UIDefaults.LazyValue that creates an ImageIcon UIResource for the specified gifFile filename.

Parameters:
baseClass - the base class for accessing the icon resource.
gifFile - the file name.
Returns:
A UIDefaults.LazyValue that serves up an IconUIResource.

makeInputMap

public static InputMap makeInputMap(Object[] keys)
Creates a InputMap from keys. keys describes the InputMap, every even indexed item is either a KeyStroke or a String representing a KeyStroke and every odd indexed item is the Object associated with that KeyStroke in an ActionMap.

Parameters:
keys - the Object array describing the InputMap as above
Returns:
A new input map.

makeKeyBindings

public static JTextComponent.KeyBinding[] makeKeyBindings(Object[] keyBindingList)
Convenience method for building lists of KeyBindings. keyBindingList is an array of KeyStroke-Action pairs where even indexed elements are KeyStrokes or Strings representing KeyStrokes and odd indexed elements are the associated Actions.

Parameters:
keyBindingList - the array of KeyStroke-Action pairs
Returns:
a JTextComponent.KeyBinding array

provideErrorFeedback

public void provideErrorFeedback(Component component)
Invoked when the user attempts an invalid operation. The default implementation just beeps. Subclasses that wish to change this need to override this method.

Parameters:
component - the component the error occured in

toString

public String toString()
Returns a string that displays and identifies this object's properties.

Overrides:
toString in class Object
Returns:
string containing the description and class name.
See Also:
Object.getClass(), Object.hashCode(), Class.getName(), Integer.toHexString(int)

uninitialize

public void uninitialize()
UIManager.setLookAndFeel calls this method just before we're replaced by a new default look and feel.


uninstallBorder

public static void uninstallBorder(JComponent c)
Convenience method for un-installing a component's default border on the specified component if the border is currently an instance of UIResource.

Parameters:
c - the component (null not permitted).

installProperty

public static void installProperty(JComponent c,
                                   String propertyName,
                                   Object value)
This methods installs a UI property if it hasn't already been set by an application. This method is used by UI delegates that install a default value for a property with a primitive type but do not want to override a value that has been set by an application. The supported properties depend on the actual type of the component and are listed in the table below. The supported properties are of course inherited to subclasses.
TypeSupported properties
JComponent opaque, autoscrolls
AbstractButton borderPainted, rolloverEnabled, iconTextGap, contentAreaFilled
JDesktopPane dragMode
JSplitPane dividerSize, oneTouchExpandable
JTable rowHeight
JTree rowHeight, scrollsOnExpand, showsRootHandles

Parameters:
c - the component to install the property to
propertyName - the name of the property
value - the value of the property
Throws:
IllegalArgumentException - if the specified property cannot be set by this method
ClassCastException - if the property value does not match the property type
NullPointerException - if c or propertyValue is null
Since:
1.5