A table of defaults for Swing components. Applications can set/get default values via the UIManager.

Warning: Serialized objects of this class will not be compatible with future Swing releases. The current serialization support is appropriate for short term storage or RMI between applications running the same version of Swing. As of 1.4, support for long term storage of all JavaBeansTM has been added to the java.beans package. Please see java.beans.XMLEncoder .

@version
1.58 05/05/04
@author
Hans Muller
See Also
Create an empty defaults table.
Create a defaults table initialized with the specified key/value pairs. For example:
        Object[] uiDefaults = {
             "Font", new Font("Dialog", Font.BOLD, 12),
            "Color", Color.red,
             "five", new Integer(5)
        }
        UIDefaults myDefaults = new UIDefaults(uiDefaults);
 
Parameters
keyValueListan array of objects containing the key/value pairs
Adds a PropertyChangeListener to the listener list. The listener is registered for all properties.

A PropertyChangeEvent will get fired whenever a default is changed.

Parameters
listenerthe PropertyChangeListener to be added
Adds a resource bundle to the list of resource bundles that are searched for localized values. Resource bundles are searched in the reverse order they were added. In other words, the most recently added bundle is searched first.
Parameters
bundleNamethe base name of the resource bundle to be added
@since
1.4
Clears this hashtable so that it contains no keys.
Creates a shallow copy of this hashtable. All the structure of the hashtable itself is copied, but the keys and values are not cloned. This is a relatively expensive operation.
Return
a clone of the hashtable.
Tests if some key maps into the specified value in this hashtable. This operation is more expensive than the containsKey method.

Note that this method is identical in functionality to containsValue, (which is part of the Map interface in the collections framework).

Parameters
valuea value to search for.
Return
true if and only if some key maps to the value argument in this hashtable as determined by the equals method; false otherwise.
Throws
NullPointerExceptionif the value is null.
Tests if the specified object is a key in this hashtable.
Parameters
keypossible key.
Return
true if and only if the specified object is a key in this hashtable, as determined by the equals method; false otherwise.
Throws
NullPointerExceptionif the key is null.
Returns true if this Hashtable maps one or more keys to this value.

Note that this method is identical in functionality to contains (which predates the Map interface).

Parameters
valuevalue whose presence in this Hashtable is to be tested.
Return
true if this map maps one or more keys to the specified value.
Throws
NullPointerExceptionif the value is null.
@since
1.2
See Also
Returns an enumeration of the values in this hashtable. Use the Enumeration methods on the returned object to fetch the elements sequentially.
Return
an enumeration of the values in this hashtable.
Returns a Set view of the entries contained in this Hashtable. Each element in this collection is a Map.Entry. The Set is backed by the Hashtable, so changes to the Hashtable are reflected in the Set, and vice-versa. The Set supports element removal (which removes the corresponding entry from the Hashtable), but not element addition.
Return
a set view of the mappings contained in this map.
@since
1.2
See Also
Compares the specified Object with this Map for equality, as per the definition in the Map interface.
Parameters
oobject to be compared for equality with this Hashtable
Return
true if the specified Object is equal to this Map.
@since
1.2
Returns the value for key. If the value is a UIDefaults.LazyValue then the real value is computed with LazyValue.createValue(), the table entry is replaced, and the real value is returned. If the value is an UIDefaults.ActiveValue the table entry is not replaced - the value is computed with ActiveValue.createValue() for each get() call. If the key is not found in the table then it is searched for in the list of resource bundles maintained by this object. The resource bundles are searched most recently added first using the locale returned by getDefaultLocale. LazyValues and ActiveValues are not supported in the resource bundles.
Parameters
keythe desired key
Return
the value for key
@since
1.4
Returns the value for key associated with the given locale. If the value is a UIDefaults.LazyValue then the real value is computed with LazyValue.createValue(), the table entry is replaced, and the real value is returned. If the value is an UIDefaults.ActiveValue the table entry is not replaced - the value is computed with ActiveValue.createValue() for each get() call. If the key is not found in the table then it is searched for in the list of resource bundles maintained by this object. The resource bundles are searched most recently added first using the given locale. LazyValues and ActiveValues are not supported in the resource bundles.
Parameters
keythe desired key
lthe desired locale
Return
the value for key
@since
1.4
If the value of key is boolean, return the boolean value, otherwise return false.
Parameters
keyan Object specifying the key for the desired boolean value
Return
if the value of key is boolean, return the boolean value, otherwise return false.
@since
1.4
If the value of key for the given Locale is boolean, return the boolean value, otherwise return false.
Parameters
keyan Object specifying the key for the desired boolean value
lthe desired locale
Return
if the value for key and Locale is boolean, return the boolean value, otherwise return false.
@since
1.4
If the value of key is a Border return it, otherwise return null.
Parameters
keythe desired key
Return
if the value for key is a Border, return the Border object; otherwise return null
If the value of key for the given Locale is a Border return it, otherwise return null.
Parameters
keythe desired key
lthe desired locale
Return
if the value for key and Locale is a Border, return the Border object; otherwise return null
@since
1.4
Returns the runtime class of an object. That Class object is the object that is locked by static synchronized methods of the represented class.
Return
The java.lang.Class object that represents the runtime class of the object. The result is of type {@code Class} where X is the erasure of the static type of the expression on which getClass is called.
If the value of key is a Color return it, otherwise return null.
Parameters
keythe desired key
Return
if the value for key is a Color, return the Color object; otherwise return null
If the value of key for the given Locale is a Color return it, otherwise return null.
Parameters
keythe desired key
lthe desired locale
Return
if the value for key and Locale is a Color, return the Color object; otherwise return null
@since
1.4
Returns the default locale. The default locale is used in retrieving localized values via get methods that do not take a locale argument. As of release 1.4, Swing UI objects should retrieve localized values using the locale of their component rather than the default locale. The default locale exists to provide compatibility with pre 1.4 behaviour.
Return
the default locale
@since
1.4
If the value of key is a Dimension return it, otherwise return null.
Parameters
keythe desired key
Return
if the value for key is a Dimension, return the Dimension object; otherwise return null
If the value of key for the given Locale is a Dimension return it, otherwise return null.
Parameters
keythe desired key
lthe desired locale
Return
if the value for key and Locale is a Dimension, return the Dimension object; otherwise return null
@since
1.4
If the value of key is a Font return it, otherwise return null.
Parameters
keythe desired key
Return
if the value for key is a Font, return the Font object; otherwise return null
If the value of key for the given Locale is a Font return it, otherwise return null.
Parameters
keythe desired key
lthe desired locale
Return
if the value for key and Locale is a Font, return the Font object; otherwise return null
@since
1.4
If the value of key is an Icon return it, otherwise return null.
Parameters
keythe desired key
Return
if the value for key is an Icon, return the Icon object; otherwise return null
If the value of key for the given Locale is an Icon return it, otherwise return null.
Parameters
keythe desired key
lthe desired locale
Return
if the value for key and Locale is an Icon, return the Icon object; otherwise return null
@since
1.4
If the value of key is an Insets return it, otherwise return null.
Parameters
keythe desired key
Return
if the value for key is an Insets, return the Insets object; otherwise return null
If the value of key for the given Locale is an Insets return it, otherwise return null.
Parameters
keythe desired key
lthe desired locale
Return
if the value for key and Locale is an Insets, return the Insets object; otherwise return null
@since
1.4
If the value of key is an Integer return its integer value, otherwise return 0.
Parameters
keythe desired key
Return
if the value for key is an Integer, return its value, otherwise return 0
If the value of key for the given Locale is an Integer return its integer value, otherwise return 0.
Parameters
keythe desired key
lthe desired locale
Return
if the value for key and Locale is an Integer, return its value, otherwise return 0
@since
1.4
Returns an array of all the PropertyChangeListeners added to this UIDefaults with addPropertyChangeListener().
Return
all of the PropertyChangeListeners added or an empty array if no listeners have been added
@since
1.4
If the value of key is a String return it, otherwise return null.
Parameters
keythe desired key
Return
if the value for key is a String, return the String object; otherwise return null
If the value of key for the given Locale is a String return it, otherwise return null.
Parameters
keythe desired key
lthe desired Locale
Return
if the value for key for the given Locale is a String, return the String object; otherwise return null
@since
1.4
Creates an ComponentUI implementation for the specified component. In other words create the look and feel specific delegate object for target. This is done in two steps:
  • Look up the name of the ComponentUI implementation class under the value returned by target.getUIClassID().
  • Use the implementation classes static createUI() method to construct a look and feel delegate.
Parameters
targetthe JComponent which needs a UI
Return
the ComponentUI object
Returns the L&F class that renders this component.
Parameters
uiClassIDa string containing the class ID
Return
the Class object returned by getUIClass(uiClassID, null)
The value of get(uidClassID) must be the String name of a class that implements the corresponding ComponentUI class. If the class hasn't been loaded before, this method looks up the class with uiClassLoader.loadClass() if a non null class loader is provided, classForName() otherwise.

If a mapping for uiClassID exists or if the specified class can't be found, return null.

This method is used by getUI, it's usually not necessary to call it directly.

Parameters
uiClassIDa string containing the class ID
uiClassLoaderthe object which will load the class
Return
the value of Class.forName(get(uidClassID))
See Also
Returns the hash code value for this Map as per the definition in the Map interface.
@since
1.2
Tests if this hashtable maps no keys to values.
Return
true if this hashtable maps no keys to values; false otherwise.
Returns an enumeration of the keys in this hashtable.
Return
an enumeration of the keys in this hashtable.
Returns a Set view of the keys contained in this Hashtable. The Set is backed by the Hashtable, so changes to the Hashtable are reflected in the Set, and vice-versa. The Set supports element removal (which removes the corresponding entry from the Hashtable), but not element addition.
Return
a set view of the keys contained in this map.
@since
1.2
Wakes up a single thread that is waiting on this object's monitor. If any threads are waiting on this object, one of them is chosen to be awakened. The choice is arbitrary and occurs at the discretion of the implementation. A thread waits on an object's monitor by calling one of the wait methods.

The awakened thread will not be able to proceed until the current thread relinquishes the lock on this object. The awakened thread will compete in the usual manner with any other threads that might be actively competing to synchronize on this object; for example, the awakened thread enjoys no reliable privilege or disadvantage in being the next thread to lock this object.

This method should only be called by a thread that is the owner of this object's monitor. A thread becomes the owner of the object's monitor in one of three ways:

  • By executing a synchronized instance method of that object.
  • By executing the body of a synchronized statement that synchronizes on the object.
  • For objects of type Class, by executing a synchronized static method of that class.

Only one thread at a time can own an object's monitor.

Throws
IllegalMonitorStateExceptionif the current thread is not the owner of this object's monitor.
Wakes up all threads that are waiting on this object's monitor. A thread waits on an object's monitor by calling one of the wait methods.

The awakened threads will not be able to proceed until the current thread relinquishes the lock on this object. The awakened threads will compete in the usual manner with any other threads that might be actively competing to synchronize on this object; for example, the awakened threads enjoy no reliable privilege or disadvantage in being the next thread to lock this object.

This method should only be called by a thread that is the owner of this object's monitor. See the notify method for a description of the ways in which a thread can become the owner of a monitor.

Throws
IllegalMonitorStateExceptionif the current thread is not the owner of this object's monitor.
Sets the value of key to value for all locales. If key is a string and the new value isn't equal to the old one, fire a PropertyChangeEvent. If value is null, the key is removed from the table.
Parameters
keythe unique Object who's value will be used to retrieve the data value associated with it
valuethe new Object to store as data under that key
Return
the previous Object value, or null
Copies all of the mappings from the specified Map to this Hashtable These mappings will replace any mappings that this Hashtable had for any of the keys currently in the specified Map.
Parameters
tMappings to be stored in this map.
Throws
NullPointerExceptionif the specified map is null.
@since
1.2
Puts all of the key/value pairs in the database and unconditionally generates one PropertyChangeEvent. The events oldValue and newValue will be null and its propertyName will be "UIDefaults". The key/value pairs are added for all locales.
Parameters
keyValueListan array of key/value pairs
Removes the key (and its corresponding value) from this hashtable. This method does nothing if the key is not in the hashtable.
Parameters
keythe key that needs to be removed.
Return
the value to which the key had been mapped in this hashtable, or null if the key did not have a mapping.
Throws
NullPointerExceptionif the key is null.
Removes a PropertyChangeListener from the listener list. This removes a PropertyChangeListener that was registered for all properties.
Parameters
listenerthe PropertyChangeListener to be removed
Removes a resource bundle from the list of resource bundles that are searched for localized defaults.
Parameters
bundleNamethe base name of the resource bundle to be removed
@since
1.4
Sets the default locale. The default locale is used in retrieving localized values via get methods that do not take a locale argument. As of release 1.4, Swing UI objects should retrieve localized values using the locale of their component rather than the default locale. The default locale exists to provide compatibility with pre 1.4 behaviour.
Parameters
lthe new default locale
@since
1.4
Returns the number of keys in this hashtable.
Return
the number of keys in this hashtable.
Returns a string representation of this Hashtable object in the form of a set of entries, enclosed in braces and separated by the ASCII characters "" (comma and space). Each entry is rendered as the key, an equals sign =, and the associated element, where the toString method is used to convert the key and element to strings.

Overrides to toString method of Object.

Return
a string representation of this hashtable.
Returns a Collection view of the values contained in this Hashtable. The Collection is backed by the Hashtable, so changes to the Hashtable are reflected in the Collection, and vice-versa. The Collection supports element removal (which removes the corresponding entry from the Hashtable), but not element addition.
Return
a collection view of the values contained in this map.
@since
1.2
Causes current thread to wait until another thread invokes the method or the method for this object. In other words, this method behaves exactly as if it simply performs the call wait(0).

The current thread must own this object's monitor. The thread releases ownership of this monitor and waits until another thread notifies threads waiting on this object's monitor to wake up either through a call to the notify method or the notifyAll method. The thread then waits until it can re-obtain ownership of the monitor and resumes execution.

As in the one argument version, interrupts and spurious wakeups are possible, and this method should always be used in a loop:

     synchronized (obj) {
         while (<condition does not hold>)
             obj.wait();
         ... // Perform action appropriate to condition
     }
 
This method should only be called by a thread that is the owner of this object's monitor. See the notify method for a description of the ways in which a thread can become the owner of a monitor.
Throws
IllegalMonitorStateExceptionif the current thread is not the owner of the object's monitor.
InterruptedExceptionif another thread interrupted the current thread before or while the current thread was waiting for a notification. The interrupted status of the current thread is cleared when this exception is thrown.
Causes current thread to wait until either another thread invokes the method or the method for this object, or a specified amount of time has elapsed.

The current thread must own this object's monitor.

This method causes the current thread (call it T) to place itself in the wait set for this object and then to relinquish any and all synchronization claims on this object. Thread T becomes disabled for thread scheduling purposes and lies dormant until one of four things happens:

  • Some other thread invokes the notify method for this object and thread T happens to be arbitrarily chosen as the thread to be awakened.
  • Some other thread invokes the notifyAll method for this object.
  • Some other thread interrupts thread T.
  • The specified amount of real time has elapsed, more or less. If timeout is zero, however, then real time is not taken into consideration and the thread simply waits until notified.
The thread T is then removed from the wait set for this object and re-enabled for thread scheduling. It then competes in the usual manner with other threads for the right to synchronize on the object; once it has gained control of the object, all its synchronization claims on the object are restored to the status quo ante - that is, to the situation as of the time that the wait method was invoked. Thread T then returns from the invocation of the wait method. Thus, on return from the wait method, the synchronization state of the object and of thread T is exactly as it was when the wait method was invoked.

A thread can also wake up without being notified, interrupted, or timing out, a so-called spurious wakeup. While this will rarely occur in practice, applications must guard against it by testing for the condition that should have caused the thread to be awakened, and continuing to wait if the condition is not satisfied. In other words, waits should always occur in loops, like this one:

     synchronized (obj) {
         while (<condition does not hold>)
             obj.wait(timeout);
         ... // Perform action appropriate to condition
     }
 
(For more information on this topic, see Section 3.2.3 in Doug Lea's "Concurrent Programming in Java (Second Edition)" (Addison-Wesley, 2000), or Item 50 in Joshua Bloch's "Effective Java Programming Language Guide" (Addison-Wesley, 2001).

If the current thread is interrupted by another thread while it is waiting, then an InterruptedException is thrown. This exception is not thrown until the lock status of this object has been restored as described above.

Note that the wait method, as it places the current thread into the wait set for this object, unlocks only this object; any other objects on which the current thread may be synchronized remain locked while the thread waits.

This method should only be called by a thread that is the owner of this object's monitor. See the notify method for a description of the ways in which a thread can become the owner of a monitor.

Parameters
timeoutthe maximum time to wait in milliseconds.
Throws
IllegalArgumentExceptionif the value of timeout is negative.
IllegalMonitorStateExceptionif the current thread is not the owner of the object's monitor.
InterruptedExceptionif another thread interrupted the current thread before or while the current thread was waiting for a notification. The interrupted status of the current thread is cleared when this exception is thrown.
Causes current thread to wait until another thread invokes the method or the method for this object, or some other thread interrupts the current thread, or a certain amount of real time has elapsed.

This method is similar to the wait method of one argument, but it allows finer control over the amount of time to wait for a notification before giving up. The amount of real time, measured in nanoseconds, is given by:

 1000000*timeout+nanos

In all other respects, this method does the same thing as the method of one argument. In particular, wait(0, 0) means the same thing as wait(0).

The current thread must own this object's monitor. The thread releases ownership of this monitor and waits until either of the following two conditions has occurred:

  • Another thread notifies threads waiting on this object's monitor to wake up either through a call to the notify method or the notifyAll method.
  • The timeout period, specified by timeout milliseconds plus nanos nanoseconds arguments, has elapsed.

The thread then waits until it can re-obtain ownership of the monitor and resumes execution.

As in the one argument version, interrupts and spurious wakeups are possible, and this method should always be used in a loop:

     synchronized (obj) {
         while (<condition does not hold>)
             obj.wait(timeout, nanos);
         ... // Perform action appropriate to condition
     }
 
This method should only be called by a thread that is the owner of this object's monitor. See the notify method for a description of the ways in which a thread can become the owner of a monitor.
Parameters
timeoutthe maximum time to wait in milliseconds.
nanosadditional time, in nanoseconds range 0-999999.
Throws
IllegalArgumentExceptionif the value of timeout is negative or the value of nanos is not in the range 0-999999.
IllegalMonitorStateExceptionif the current thread is not the owner of this object's monitor.
InterruptedExceptionif another thread interrupted the current thread before or while the current thread was waiting for a notification. The interrupted status of the current thread is cleared when this exception is thrown.