javax.swing

Class LookAndFeel

Known Direct 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)

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, extends Object> getClass, finalize, hashCode, notify, notifyAll, toString, wait, wait, wait

Method Details

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.

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
JComponentopaque, autoscrolls
AbstractButtonborderPainted, rolloverEnabled, iconTextGap, contentAreaFilled
JDesktopPanedragMode
JSplitPanedividerSize, oneTouchExpandable
JTablerowHeight
JTreerowHeight, 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 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 interface Object
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).

LookAndFeel.java -- Copyright (C) 2002, 2004, 2005, 2006, Free Software Foundation, Inc. This file is part of GNU Classpath. GNU Classpath is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. GNU Classpath is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Classpath; see the file COPYING. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination. As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.