javax.swing.plaf.basic

Class BasicLabelUI

Implemented Interfaces:
EventListener, PropertyChangeListener
Known Direct Subclasses:
MetalLabelUI, MotifLabelUI, WindowsLabelUI

public class BasicLabelUI
extends LabelUI
implements PropertyChangeListener

A Windows L&F implementation of LabelUI. This implementation is completely static, i.e. there's only one UIView implementation that's shared by all JLabel objects.

Field Summary

protected static BasicLabelUI
labelUI

Method Summary

static ComponentUI
createUI(JComponent c)
Returns an instance of the UI delegate for the specified component.
Dimension
getMaximumSize(JComponent c)
Dimension
getMinimumSize(JComponent c)
Dimension
getPreferredSize(JComponent c)
Returns the specified component's preferred size appropriate for the look and feel.
protected void
installComponents(JLabel c)
protected void
installDefaults(JLabel c)
protected void
installKeyboardActions(JLabel l)
protected void
installListeners(JLabel c)
void
installUI(JComponent c)
Configures the specified component appropriate for the look and feel.
protected String
layoutCL(JLabel label, FontMetrics fontMetrics, String text, Icon icon, Rectangle viewR, Rectangle iconR, Rectangle textR)
Forwards the call to SwingUtilities.layoutCompoundLabel().
void
paint(Graphics g, JComponent c)
Paint the label text in the foreground color, if the label is opaque then paint the entire background with the background color.
protected void
paintDisabledText(JLabel l, Graphics g, String s, int textX, int textY)
Paint clippedText at textX, textY with background.lighter() and then shifted down and to the right by one pixel with background.darker().
protected void
paintEnabledText(JLabel l, Graphics g, String s, int textX, int textY)
Paint clippedText at textX, textY with the labels foreground color.
void
propertyChange(PropertyChangeEvent e)
This method gets called when a bound property is changed.
protected void
uninstallComponents(JLabel c)
protected void
uninstallDefaults(JLabel c)
protected void
uninstallKeyboardActions(JLabel c)
protected void
uninstallListeners(JLabel c)
void
uninstallUI(JComponent c)
Reverses configuration which was done on the specified component during installUI.

Methods inherited from class javax.swing.plaf.ComponentUI

contains, createUI, getAccessibleChild, getAccessibleChildrenCount, getMaximumSize, getMinimumSize, getPreferredSize, installUI, paint, uninstallUI, update

Methods inherited from class java.lang.Object

clone, equals, extends Object> getClass, finalize, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Details

labelUI

protected static BasicLabelUI labelUI

Method Details

createUI

public static ComponentUI createUI(JComponent c)
Returns an instance of the UI delegate for the specified component. Each subclass must provide its own static createUI method that returns an instance of that UI delegate subclass. If the UI delegate subclass is stateless, it may return an instance that is shared by multiple components. If the UI delegate is stateful, then it should return a new instance per component. The default implementation of this method throws an error, as it should never be invoked.
Overrides:
createUI in interface ComponentUI

getMaximumSize

public Dimension getMaximumSize(JComponent c)
Overrides:
getMaximumSize in interface ComponentUI
Returns:
getPreferredSize(c)

getMinimumSize

public Dimension getMinimumSize(JComponent c)
Overrides:
getMinimumSize in interface ComponentUI
Returns:
getPreferredSize(c)

getPreferredSize

public Dimension getPreferredSize(JComponent c)
Returns the specified component's preferred size appropriate for the look and feel. If null is returned, the preferred size will be calculated by the component's layout manager instead (this is the preferred approach for any component with a specific layout manager installed). The default implementation of this method returns null.
Overrides:
getPreferredSize in interface ComponentUI
Parameters:
c - the component whose preferred size is being queried; this argument is often ignored, but might be used if the UI object is stateless and shared by multiple components

installComponents

protected void installComponents(JLabel c)

installDefaults

protected void installDefaults(JLabel c)

installKeyboardActions

protected void installKeyboardActions(JLabel l)

installListeners

protected void installListeners(JLabel c)

installUI

public void installUI(JComponent c)
Configures the specified component appropriate for the look and feel. This method is invoked when the ComponentUI instance is being installed as the UI delegate on the specified component. This method should completely configure the component for the look and feel, including the following:
  1. Install any default property values for color, fonts, borders, icons, opacity, etc. on the component. Whenever possible, property values initialized by the client program should not be overridden.
  2. Install a LayoutManager on the component if necessary.
  3. Create/add any required sub-components to the component.
  4. Create/install event listeners on the component.
  5. Create/install a PropertyChangeListener on the component in order to detect and respond to component property changes appropriately.
  6. Install keyboard UI (mnemonics, traversal, etc.) on the component.
  7. Initialize any appropriate instance data.
Overrides:
installUI in interface ComponentUI
Parameters:
c - the component where this UI delegate is being installed

layoutCL

protected String layoutCL(JLabel label,
                          FontMetrics fontMetrics,
                          String text,
                          Icon icon,
                          Rectangle viewR,
                          Rectangle iconR,
                          Rectangle textR)
Forwards the call to SwingUtilities.layoutCompoundLabel(). This method is here so that a subclass could do Label specific layout and to shorten the method name a little.
See Also:
SwingUtilities.layoutCompoundLabel

paint

public void paint(Graphics g,
                  JComponent c)
Paint the label text in the foreground color, if the label is opaque then paint the entire background with the background color. The Label text is drawn by paintEnabledText() or paintDisabledText(). The locations of the label parts are computed by layoutCL.
Overrides:
paint in interface ComponentUI

paintDisabledText

protected void paintDisabledText(JLabel l,
                                 Graphics g,
                                 String s,
                                 int textX,
                                 int textY)
Paint clippedText at textX, textY with background.lighter() and then shifted down and to the right by one pixel with background.darker().

paintEnabledText

protected void paintEnabledText(JLabel l,
                                Graphics g,
                                String s,
                                int textX,
                                int textY)
Paint clippedText at textX, textY with the labels foreground color.

propertyChange

public void propertyChange(PropertyChangeEvent e)
This method gets called when a bound property is changed.
Specified by:
propertyChange in interface PropertyChangeListener
Parameters:

uninstallComponents

protected void uninstallComponents(JLabel c)

uninstallDefaults

protected void uninstallDefaults(JLabel c)

uninstallKeyboardActions

protected void uninstallKeyboardActions(JLabel c)

uninstallListeners

protected void uninstallListeners(JLabel c)

uninstallUI

public void uninstallUI(JComponent c)
Reverses configuration which was done on the specified component during installUI. This method is invoked when this UIComponent instance is being removed as the UI delegate for the specified component. This method should undo the configuration performed in installUI, being careful to leave the JComponent instance in a clean state (no extraneous listeners, look-and-feel-specific property objects, etc.). This should include the following:
  1. Remove any UI-set borders from the component.
  2. Remove any UI-set layout managers on the component.
  3. Remove any UI-added sub-components from the component.
  4. Remove any UI-added event/property listeners from the component.
  5. Remove any UI-installed keyboard UI from the component.
  6. Nullify any allocated instance data objects to allow for GC.
Overrides:
uninstallUI in interface ComponentUI
Parameters:
c - the component from which this UI delegate is being removed; this argument is often ignored, but might be used if the UI object is stateless and shared by multiple components