javax.swing

Class LookAndFeel

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 {@link MetalLookAndFeel}) is provided.

See Also: getInstalledLookAndFeels setLookAndFeel

Method Summary
UIDefaultsgetDefaults()
Creates and returns a look-and-feel specific defaults table.
abstract StringgetDescription()
Returns a description of the look and feel.
static ObjectgetDesktopPropertyValue(String systemPropertyName, Object fallbackValue)
Returns the value of Toolkit.getDefaultToolkit() .getDesktopProperty(systemPropertyName), or fallbackValue if no such property is defined.
abstract StringgetID()
Returns an identifier for the look and feel.
abstract StringgetName()
Returns the name for the look and feel.
booleangetSupportsWindowDecorations()
Returns true when the look-and-feel supports window decorations, and false otherwise.
voidinitialize()
Initializes the look-and-feel.
static voidinstallBorder(JComponent c, String defaultBorderName)
Convenience method for installing a component's default {@link Border} object on the specified component if either the border is currently null or already an instance of {@link UIResource}.
static voidinstallColors(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 voidinstallColorsAndFont(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 voidinstallProperty(JComponent c, String propertyName, Object value)
This methods installs a UI property if it hasn't already been set by an application.
abstract booleanisNativeLookAndFeel()
Returns true if the look-and-feel is the "native" look-and-feel for the current platform, and false otherwise.
abstract booleanisSupportedLookAndFeel()
Returns true if the look-and-feel is supported on the current operating system, and false otherwise.
static voidloadKeyBindings(InputMap retMap, Object[] keys)
Loads the bindings in keys into retMap.
static ComponentInputMapmakeComponentInputMap(JComponent c, Object[] keys)
Creates a ComponentInputMap from keys.
static ObjectmakeIcon(Class<?> baseClass, String gifFile)
Utility method that creates a UIDefaults.LazyValue that creates an ImageIcon UIResource for the specified gifFile filename.
static InputMapmakeInputMap(Object[] keys)
Creates a InputMap from keys.
static JTextComponent.KeyBinding[]makeKeyBindings(Object[] keyBindingList)
Convenience method for building lists of KeyBindings.
voidprovideErrorFeedback(Component component)
Invoked when the user attempts an invalid operation.
StringtoString()
Returns a string that displays and identifies this object's properties.
voiduninitialize()
UIManager.setLookAndFeel calls this method just before we're replaced by a new default look and feel.
static voiduninstallBorder(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.

Method Detail

getDefaults

public UIDefaults getDefaults()
Creates and returns a look-and-feel specific defaults table. This method is called once by {@link 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 {@link UIManager#setLookAndFeel(LookAndFeel)} method calls this method before the first call (and typically the only call) to {@link #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 {@link Border} object on the specified component if either the border is currently null or already an instance of {@link 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.

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

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 {@link UIDefaults.LazyValue} that serves up an {@link 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.

Returns: string containing the description and class name.

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).