LayerUI (Java SE 15 & JDK 15)
Description: declaration: module: java.desktop, package: javax.swing.plaf, class: LayerUI
Keywords: javax.swing.plaf.LayerUI class

Module java.desktop
Package javax.swing.plaf

# Class LayerUI<V extends Component>

java.lang.Object
javax.swing.plaf.ComponentUI
javax.swing.plaf.LayerUI<V>

Type Parameters:
  `V` - one of the super types of `JLayer`'s view component

All Implemented Interfaces:
  `Serializable`

    public class LayerUI<V extends Component>
    extends ComponentUI
    implements Serializable

The base class for all `JLayer`'s UI delegates.

`paint(java.awt.Graphics, javax.swing.JComponent)` method performs the painting of the `JLayer` and `eventDispatched(AWTEvent, JLayer)` method is notified about any `AWTEvent`s which have been generated by a `JLayer` or any of its subcomponents.

The `LayerUI` differs from the UI delegates of the other components, because it is LookAndFeel independent and is not updated by default when the system LookAndFeel is changed.

The subclasses of `LayerUI` can either be stateless and shareable by multiple `JLayer`s or not shareable.

Since:
  1.7
See Also:
  `JLayer.setUI(LayerUI)`, `JLayer.setView(Component)`, `JLayer.getView()`

- ## Constructor Summary

  Constructors
  Constructor | Description
  --- | ---
  `LayerUI()` |

- ## Method Summary

  Modifier and Type | Method | Description
  --- | --- | ---
  `void` | `addPropertyChangeListener​(PropertyChangeListener listener)` | Adds a PropertyChangeListener to the listener list.
  `void` | `addPropertyChangeListener​(String propertyName, PropertyChangeListener listener)` | Adds a PropertyChangeListener to the listener list for a specific property.
  `void` | `applyPropertyChange​(PropertyChangeEvent evt, JLayer<? extends V> l)` | Notifies the `LayerUI` when any of its property are changed and enables updating every `JLayer` this `LayerUI` instance is set to.
  `void` | `doLayout​(JLayer<? extends V> l)` | Causes the passed instance of `JLayer` to lay out its components.
  `void` | `eventDispatched​(AWTEvent e, JLayer<? extends V> l)` | Processes `AWTEvent`s for `JLayer` and all its descendants to this `LayerUI` instance.
  `protected void` | `firePropertyChange​(String propertyName, Object oldValue, Object newValue)` | Support for reporting bound property changes for Object properties.
  `int` | `getBaseline​(JComponent c, int width, int height)` | If the `JLayer`'s view component is not `null`, this calls the view's `getBaseline()` method.
  `Component.BaselineResizeBehavior` | `getBaselineResizeBehavior​(JComponent c)` | If the `JLayer`'s view component is not `null`, this returns the result of the view's `getBaselineResizeBehavior()` method.
  `Dimension` | `getMaximumSize​(JComponent c)` | If the `JLayer`'s view component is not `null`, this returns the result of the view's `getMaximumSize()` method.
  `Dimension` | `getMinimumSize​(JComponent c)` | If the `JLayer`'s view component is not `null`, this returns the result of the view's `getMinimalSize()` method.
  `Dimension` | `getPreferredSize​(JComponent c)` | If the `JLayer`'s view component is not `null`, this returns the result of the view's `getPreferredSize()` method.
  `PropertyChangeListener[]` | `getPropertyChangeListeners()` | Returns an array of all the property change listeners registered on this component.
  `PropertyChangeListener[]` | `getPropertyChangeListeners​(String propertyName)` | Returns an array of all the listeners which have been associated with the named property.
  `boolean` | `imageUpdate​(Image img, int infoflags, int x, int y, int w, int h, JLayer<? extends V> l)` | Delegates its functionality to the default implementation of the `JLayer.imageUpdate` method which is inherited from `JLayer`'s base classes.
  `void` | `installUI​(JComponent c)` | Configures the `JLayer` this `LayerUI` is set to.
  `void` | `paint​(Graphics g, JComponent c)` | Paints the specified component.
  `void` | `paintImmediately​(int x, int y, int width, int height, JLayer<? extends V> l)` | Paints the specified region in the `JLayer` this `LayerUI` is set to, immediately.
  `protected void` | `processComponentEvent​(ComponentEvent e, JLayer<? extends V> l)` | Processes component events occurring on the `JLayer` or any of its subcomponents.
  `protected void` | `processFocusEvent​(FocusEvent e, JLayer<? extends V> l)` | Processes focus events occurring on the `JLayer` or any of its subcomponents.
  `protected void` | `processHierarchyBoundsEvent​(HierarchyEvent e, JLayer<? extends V> l)` | Processes hierarchy bounds event occurring on the `JLayer` or any of its subcomponents.
  `protected void` | `processHierarchyEvent​(HierarchyEvent e, JLayer<? extends V> l)` | Processes hierarchy event occurring on the `JLayer` or any of its subcomponents.
  `protected void` | `processInputMethodEvent​(InputMethodEvent e, JLayer<? extends V> l)` | Processes input event occurring on the `JLayer` or any of its subcomponents.
  `protected void` | `processKeyEvent​(KeyEvent e, JLayer<? extends V> l)` | Processes key events occurring on the `JLayer` or any of its subcomponents.
  `protected void` | `processMouseEvent​(MouseEvent e, JLayer<? extends V> l)` | Processes mouse events occurring on the `JLayer` or any of its subcomponents.
  `protected void` | `processMouseMotionEvent​(MouseEvent e, JLayer<? extends V> l)` | Processes mouse motion event occurring on the `JLayer` or any of its subcomponents.
  `protected void` | `processMouseWheelEvent​(MouseWheelEvent e, JLayer<? extends V> l)` | Processes mouse wheel event occurring on the `JLayer` or any of its subcomponents.
  `void` | `removePropertyChangeListener​(PropertyChangeListener listener)` | Removes a PropertyChangeListener from the listener list.
  `void` | `removePropertyChangeListener​(String propertyName, PropertyChangeListener listener)` | Removes a `PropertyChangeListener` from the listener list for a specific property.
  `void` | `uninstallUI​(JComponent c)` | Reverses the configuration which was previously set in the `installUI(JComponent)` method.
  `void` | `updateUI​(JLayer<? extends V> l)` | Invoked when `JLayer.updateUI()` is called by the `JLayer` this `LayerUI` is set to.

  ### Methods declared in class javax.swing.plaf.ComponentUI

  `contains, createUI, getAccessibleChild, getAccessibleChildrenCount, update`

  ### Methods declared in class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### LayerUI

    public LayerUI()

- ## Method Details

  - ### paint

    public void paint​(Graphics g, JComponent c)
    Paints the specified component. Subclasses should override this method and use the specified `Graphics` object to render the content of the component.

    The default implementation paints the passed component as is.

    Overrides:
      `paint` in class `ComponentUI`
    Parameters:
      `g` - the `Graphics` context in which to paint
      `c` - the component being painted
    See Also:
      `ComponentUI.update(java.awt.Graphics, javax.swing.JComponent)`

  - ### eventDispatched

    public void eventDispatched​(AWTEvent e, JLayer<? extends V> l)
    Processes `AWTEvent`s for `JLayer` and all its descendants to this `LayerUI` instance.

    To enable the `AWTEvent`s of a particular type, you call `JLayer.setLayerEventMask(long)` in `installUI(javax.swing.JComponent)` and set the layer event mask to `0` in `uninstallUI(javax.swing.JComponent)` after that. By default this method calls the appropriate `process<event` `type>Event` method for the given class of event.

    Note: Events are processed only for displayable `JLayer`s.

    Parameters:
      `e` - the event to be dispatched
      `l` - the layer this LayerUI is set to
    See Also:
      `JLayer.setLayerEventMask(long)`, `Component.isDisplayable()`, `processComponentEvent(java.awt.event.ComponentEvent, javax.swing.JLayer<? extends V>)`, `processFocusEvent(java.awt.event.FocusEvent, javax.swing.JLayer<? extends V>)`, `processKeyEvent(java.awt.event.KeyEvent, javax.swing.JLayer<? extends V>)`, `processMouseEvent(java.awt.event.MouseEvent, javax.swing.JLayer<? extends V>)`, `processMouseMotionEvent(java.awt.event.MouseEvent, javax.swing.JLayer<? extends V>)`, `processInputMethodEvent(java.awt.event.InputMethodEvent, javax.swing.JLayer<? extends V>)`, `processHierarchyEvent(java.awt.event.HierarchyEvent, javax.swing.JLayer<? extends V>)`, `processMouseWheelEvent(java.awt.event.MouseWheelEvent, javax.swing.JLayer<? extends V>)`

  - ### processComponentEvent

    protected void processComponentEvent​(ComponentEvent e, JLayer<? extends V> l)
    Processes component events occurring on the `JLayer` or any of its subcomponents.

    This method is not called unless component events are enabled for the `JLayer` objects, this `LayerUI` is set to. Component events are enabled in the overridden `installUI(javax.swing.JComponent)` method and should be disabled in the `uninstallUI(javax.swing.JComponent)` method after that.

         public void installUI(JComponent c) {
            super.installUI(c);
            JLayer l = (JLayer) c;
            l.setLayerEventMask(AWTEvent.COMPONENT_EVENT_MASK);
         }

         public void uninstallUI(JComponent c) {
             super.uninstallUI(c);
             JLayer l = (JLayer) c;
             l.setLayerEventMask(0);
         }

    Parameters:
      `e` - the `ComponentEvent` to be processed
      `l` - the layer this `LayerUI` instance is set to
    See Also:
      `JLayer.setLayerEventMask(long)`, `installUI(javax.swing.JComponent)`, `uninstallUI(javax.swing.JComponent)`

  - ### processFocusEvent

    protected void processFocusEvent​(FocusEvent e, JLayer<? extends V> l)
    Processes focus events occurring on the `JLayer` or any of its subcomponents.

    This method is not called unless focus events are enabled for the `JLayer` objects, this `LayerUI` is set to. Focus events are enabled in the overridden `installUI(javax.swing.JComponent)` method and should be disabled in the `uninstallUI(javax.swing.JComponent)` method after that.

         public void installUI(JComponent c) {
            super.installUI(c);
            JLayer l = (JLayer) c;
            l.setLayerEventMask(AWTEvent.FOCUS_EVENT_MASK);
         }

         public void uninstallUI(JComponent c) {
             super.uninstallUI(c);
             JLayer l = (JLayer) c;
             l.setLayerEventMask(0);
         }

    Parameters:
      `e` - the `FocusEvent` to be processed
      `l` - the layer this `LayerUI` instance is set to
    See Also:
      `JLayer.setLayerEventMask(long)`, `installUI(javax.swing.JComponent)`, `uninstallUI(javax.swing.JComponent)`

  - ### processKeyEvent

    protected void processKeyEvent​(KeyEvent e, JLayer<? extends V> l)
    Processes key events occurring on the `JLayer` or any of its subcomponents.

    This method is not called unless key events are enabled for the `JLayer` objects, this `LayerUI` is set to. Key events are enabled in the overridden `installUI(javax.swing.JComponent)` method and should be disabled in the `uninstallUI(javax.swing.JComponent)` method after that.

         public void installUI(JComponent c) {
            super.installUI(c);
            JLayer l = (JLayer) c;
            l.setLayerEventMask(AWTEvent.KEY_EVENT_MASK);
         }

         public void uninstallUI(JComponent c) {
             super.uninstallUI(c);
             JLayer l = (JLayer) c;
             l.setLayerEventMask(0);
         }

    Parameters:
      `e` - the `KeyEvent` to be processed
      `l` - the layer this `LayerUI` instance is set to
    See Also:
      `JLayer.setLayerEventMask(long)`, `installUI(javax.swing.JComponent)`, `uninstallUI(javax.swing.JComponent)`

  - ### processMouseEvent

    protected void processMouseEvent​(MouseEvent e, JLayer<? extends V> l)
    Processes mouse events occurring on the `JLayer` or any of its subcomponents.

    This method is not called unless mouse events are enabled for the `JLayer` objects, this `LayerUI` is set to. Mouse events are enabled in the overridden `installUI(javax.swing.JComponent)` method and should be disabled in the `uninstallUI(javax.swing.JComponent)` method after that.

         public void installUI(JComponent c) {
            super.installUI(c);
            JLayer l = (JLayer) c;
            l.setLayerEventMask(AWTEvent.MOUSE_EVENT_MASK);
         }

         public void uninstallUI(JComponent c) {
             super.uninstallUI(c);
             JLayer l = (JLayer) c;
             l.setLayerEventMask(0);
         }

    Parameters:
      `e` - the `MouseEvent` to be processed
      `l` - the layer this `LayerUI` instance is set to
    See Also:
      `JLayer.setLayerEventMask(long)`, `installUI(javax.swing.JComponent)`, `uninstallUI(javax.swing.JComponent)`

  - ### processMouseMotionEvent

    protected void processMouseMotionEvent​(MouseEvent e, JLayer<? extends V> l)
    Processes mouse motion event occurring on the `JLayer` or any of its subcomponents.

    This method is not called unless mouse motion events are enabled for the `JLayer` objects, this `LayerUI` is set to. Mouse motion events are enabled in the overridden `installUI(javax.swing.JComponent)` method and should be disabled in the `uninstallUI(javax.swing.JComponent)` method after that.

         public void installUI(JComponent c) {
            super.installUI(c);
            JLayer l = (JLayer) c;
            l.setLayerEventMask(AWTEvent.MOUSE_MOTION_EVENT_MASK);
         }

         public void uninstallUI(JComponent c) {
             super.uninstallUI(c);
             JLayer l = (JLayer) c;
             l.setLayerEventMask(0);
         }

    Parameters:
      `e` - the `MouseEvent` to be processed
      `l` - the layer this `LayerUI` instance is set to
    See Also:
      `JLayer.setLayerEventMask(long)`, `installUI(javax.swing.JComponent)`, `uninstallUI(javax.swing.JComponent)`

  - ### processMouseWheelEvent

    protected void processMouseWheelEvent​(MouseWheelEvent e, JLayer<? extends V> l)
    Processes mouse wheel event occurring on the `JLayer` or any of its subcomponents.

    This method is not called unless mouse wheel events are enabled for the `JLayer` objects, this `LayerUI` is set to. Mouse wheel events are enabled in the overridden `installUI(javax.swing.JComponent)` method and should be disabled in the `uninstallUI(javax.swing.JComponent)` method after that.

         public void installUI(JComponent c) {
            super.installUI(c);
            JLayer l = (JLayer) c;
            l.setLayerEventMask(AWTEvent.MOUSE_WHEEL_EVENT_MASK);
         }

         public void uninstallUI(JComponent c) {
             super.uninstallUI(c);
             JLayer l = (JLayer) c;
             l.setLayerEventMask(0);
         }

    Parameters:
      `e` - the `MouseEvent` to be processed
      `l` - the layer this `LayerUI` instance is set to
    See Also:
      `JLayer.setLayerEventMask(long)`, `installUI(javax.swing.JComponent)`, `uninstallUI(javax.swing.JComponent)`

  - ### processInputMethodEvent

    protected void processInputMethodEvent​(InputMethodEvent e, JLayer<? extends V> l)
    Processes input event occurring on the `JLayer` or any of its subcomponents.

    This method is not called unless input events are enabled for the `JLayer` objects, this `LayerUI` is set to. Input events are enabled in the overridden `installUI(javax.swing.JComponent)` method and should be disabled in the `uninstallUI(javax.swing.JComponent)` method after that.

         public void installUI(JComponent c) {
            super.installUI(c);
            JLayer l = (JLayer) c;
            l.setLayerEventMask(AWTEvent.INPUT_METHOD_EVENT_MASK);
         }

         public void uninstallUI(JComponent c) {
             super.uninstallUI(c);
             JLayer l = (JLayer) c;
             l.setLayerEventMask(0);
         }

    Parameters:
      `e` - the `InputMethodEvent` to be processed
      `l` - the layer this `LayerUI` instance is set to
    See Also:
      `JLayer.setLayerEventMask(long)`, `installUI(javax.swing.JComponent)`, `uninstallUI(javax.swing.JComponent)`

  - ### processHierarchyEvent

    protected void processHierarchyEvent​(HierarchyEvent e, JLayer<? extends V> l)
    Processes hierarchy event occurring on the `JLayer` or any of its subcomponents.

    This method is not called unless hierarchy events are enabled for the `JLayer` objects, this `LayerUI` is set to. Hierarchy events are enabled in the overridden `installUI(javax.swing.JComponent)` method and should be disabled in the `uninstallUI(javax.swing.JComponent)` method after that.

         public void installUI(JComponent c) {
            super.installUI(c);
            JLayer l = (JLayer) c;
            l.setLayerEventMask(AWTEvent.HIERARCHY_EVENT_MASK);
         }

         public void uninstallUI(JComponent c) {
             super.uninstallUI(c);
             JLayer l = (JLayer) c;
             l.setLayerEventMask(0);
         }

    Parameters:
      `e` - the `HierarchyEvent` to be processed
      `l` - the layer this `LayerUI` instance is set to
    See Also:
      `JLayer.setLayerEventMask(long)`, `installUI(javax.swing.JComponent)`, `uninstallUI(javax.swing.JComponent)`

  - ### processHierarchyBoundsEvent

    protected void processHierarchyBoundsEvent​(HierarchyEvent e, JLayer<? extends V> l)
    Processes hierarchy bounds event occurring on the `JLayer` or any of its subcomponents.

    This method is not called unless hierarchy bounds events are enabled for the `JLayer` objects, this `LayerUI` is set to. Hierarchy bounds events are enabled in the overridden `installUI(javax.swing.JComponent)` method and should be disabled in the `uninstallUI(javax.swing.JComponent)` method after that.

         public void installUI(JComponent c) {
            super.installUI(c);
            JLayer l = (JLayer) c;
            l.setLayerEventMask(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
         }

         public void uninstallUI(JComponent c) {
             super.uninstallUI(c);
             JLayer l = (JLayer) c;
             l.setLayerEventMask(0);
         }

    Parameters:
      `e` - the `HierarchyEvent` to be processed
      `l` - the layer this `LayerUI` instance is set to
    See Also:
      `JLayer.setLayerEventMask(long)`, `installUI(javax.swing.JComponent)`, `uninstallUI(javax.swing.JComponent)`

  - ### updateUI

    public void updateUI​(JLayer<? extends V> l)
    Invoked when `JLayer.updateUI()` is called by the `JLayer` this `LayerUI` is set to.
    Parameters:
      `l` - the `JLayer` which UI is updated

  - ### installUI

    public void installUI​(JComponent c)
    Configures the `JLayer` this `LayerUI` is set to. The default implementation registers the passed `JLayer` component as a `PropertyChangeListener` for the property changes of this `LayerUI`.
    Overrides:
      `installUI` in class `ComponentUI`
    Parameters:
      `c` - the `JLayer` component where this UI delegate is being installed
    See Also:
      `ComponentUI.uninstallUI(javax.swing.JComponent)`, `JComponent.setUI(javax.swing.plaf.ComponentUI)`, `JComponent.updateUI()`

  - ### uninstallUI

    public void uninstallUI​(JComponent c)
    Reverses the configuration which was previously set in the `installUI(JComponent)` method. The default implementation unregisters the passed `JLayer` component as a `PropertyChangeListener` for the property changes of this `LayerUI`.
    Overrides:
      `uninstallUI` in class `ComponentUI`
    Parameters:
      `c` - the component from which this UI delegate is being removed.
    See Also:
      `ComponentUI.installUI(javax.swing.JComponent)`, `JComponent.updateUI()`

  - ### addPropertyChangeListener

    public void addPropertyChangeListener​(PropertyChangeListener listener)
    Adds a PropertyChangeListener to the listener list. The listener is registered for all bound properties of this class.

    If `listener` is `null`, no exception is thrown and no action is performed.

    Parameters:
      `listener` - the property change listener to be added
    See Also:
      `removePropertyChangeListener(java.beans.PropertyChangeListener)`, `getPropertyChangeListeners()`, `addPropertyChangeListener(String, java.beans.PropertyChangeListener)`

  - ### removePropertyChangeListener

    public void removePropertyChangeListener​(PropertyChangeListener listener)
    Removes a PropertyChangeListener from the listener list. This method should be used to remove PropertyChangeListeners that were registered for all bound properties of this class.

    If `listener` is `null`, no exception is thrown and no action is performed.

    Parameters:
      `listener` - the PropertyChangeListener to be removed
    See Also:
      `addPropertyChangeListener(java.beans.PropertyChangeListener)`, `getPropertyChangeListeners()`, `removePropertyChangeListener(String, PropertyChangeListener)`

  - ### getPropertyChangeListeners

    public PropertyChangeListener[] getPropertyChangeListeners()
    Returns an array of all the property change listeners registered on this component.
    Returns:
      all of this ui's `PropertyChangeListener`s or an empty array if no property change listeners are currently registered
    See Also:
      `addPropertyChangeListener(java.beans.PropertyChangeListener)`, `removePropertyChangeListener(java.beans.PropertyChangeListener)`, `getPropertyChangeListeners(String)`

  - ### addPropertyChangeListener

    public void addPropertyChangeListener​(String propertyName, PropertyChangeListener listener)
    Adds a PropertyChangeListener to the listener list for a specific property.

    If `propertyName` or `listener` is `null`, no exception is thrown and no action is taken.

    Parameters:
      `propertyName` - one of the property names listed above
      `listener` - the property change listener to be added
    See Also:
      `removePropertyChangeListener(String, PropertyChangeListener)`, `getPropertyChangeListeners(String)`, `addPropertyChangeListener(String, PropertyChangeListener)`

  - ### removePropertyChangeListener

    public void removePropertyChangeListener​(String propertyName, PropertyChangeListener listener)
    Removes a `PropertyChangeListener` from the listener list for a specific property. This method should be used to remove `PropertyChangeListener`s that were registered for a specific bound property.

    If `propertyName` or `listener` is `null`, no exception is thrown and no action is taken.

    Parameters:
      `propertyName` - a valid property name
      `listener` - the PropertyChangeListener to be removed
    See Also:
      `addPropertyChangeListener(String, PropertyChangeListener)`, `getPropertyChangeListeners(String)`, `removePropertyChangeListener(PropertyChangeListener)`

  - ### getPropertyChangeListeners

    public PropertyChangeListener[] getPropertyChangeListeners​(String propertyName)
    Returns an array of all the listeners which have been associated with the named property.
    Parameters:
      `propertyName` - The name of the property being listened to
    Returns:
      all of the `PropertyChangeListener`s associated with the named property; if no such listeners have been added or if `propertyName` is `null`, an empty array is returned
    See Also:
      `addPropertyChangeListener(String, PropertyChangeListener)`, `removePropertyChangeListener(String, PropertyChangeListener)`, `getPropertyChangeListeners()`

  - ### firePropertyChange

    protected void firePropertyChange​(String propertyName, Object oldValue, Object newValue)
    Support for reporting bound property changes for Object properties. This method can be called when a bound property has changed and it will send the appropriate PropertyChangeEvent to any registered PropertyChangeListeners.
    Parameters:
      `propertyName` - the property whose value has changed
      `oldValue` - the property's previous value
      `newValue` - the property's new value

  - ### applyPropertyChange

    public void applyPropertyChange​(PropertyChangeEvent evt, JLayer<? extends V> l)
    Notifies the `LayerUI` when any of its property are changed and enables updating every `JLayer` this `LayerUI` instance is set to.
    Parameters:
      `evt` - the PropertyChangeEvent generated by this `LayerUI`
      `l` - the `JLayer` this LayerUI is set to

  - ### getBaseline

    public int getBaseline​(JComponent c, int width, int height)
    If the `JLayer`'s view component is not `null`, this calls the view's `getBaseline()` method. Otherwise, the default implementation is called.
    Overrides:
      `getBaseline` in class `ComponentUI`
    Parameters:
      `c` - `JLayer` to return baseline resize behavior for
      `width` - the width to get the baseline for
      `height` - the height to get the baseline for
    Returns:
      baseline or a value < 0 indicating there is no reasonable baseline
    See Also:
      `JComponent.getBaseline(int,int)`

  - ### getBaselineResizeBehavior

    public Component.BaselineResizeBehavior getBaselineResizeBehavior​(JComponent c)
    If the `JLayer`'s view component is not `null`, this returns the result of the view's `getBaselineResizeBehavior()` method. Otherwise, the default implementation is called.
    Overrides:
      `getBaselineResizeBehavior` in class `ComponentUI`
    Parameters:
      `c` - `JLayer` to return baseline resize behavior for
    Returns:
      an enum indicating how the baseline changes as the component size changes
    See Also:
      `JComponent.getBaseline(int, int)`

  - ### doLayout

    public void doLayout​(JLayer<? extends V> l)
    Causes the passed instance of `JLayer` to lay out its components.
    Parameters:
      `l` - the `JLayer` component where this UI delegate is being installed

  - ### getPreferredSize

    public Dimension getPreferredSize​(JComponent c)
    If the `JLayer`'s view component is not `null`, this returns the result of the view's `getPreferredSize()` method. Otherwise, the default implementation is used.
    Overrides:
      `getPreferredSize` in class `ComponentUI`
    Parameters:
      `c` - `JLayer` to return preferred size for
    Returns:
      preferred size for the passed `JLayer`
    See Also:
      `JComponent.getPreferredSize()`, `LayoutManager.preferredLayoutSize(java.awt.Container)`

  - ### getMinimumSize

    public Dimension getMinimumSize​(JComponent c)
    If the `JLayer`'s view component is not `null`, this returns the result of the view's `getMinimalSize()` method. Otherwise, the default implementation is used.
    Overrides:
      `getMinimumSize` in class `ComponentUI`
    Parameters:
      `c` - `JLayer` to return preferred size for
    Returns:
      minimal size for the passed `JLayer`
    See Also:
      `JComponent.getMinimumSize()`, `LayoutManager.minimumLayoutSize(java.awt.Container)`, `ComponentUI.getPreferredSize(javax.swing.JComponent)`

  - ### getMaximumSize

    public Dimension getMaximumSize​(JComponent c)
    If the `JLayer`'s view component is not `null`, this returns the result of the view's `getMaximumSize()` method. Otherwise, the default implementation is used.
    Overrides:
      `getMaximumSize` in class `ComponentUI`
    Parameters:
      `c` - `JLayer` to return preferred size for
    Returns:
      maximum size for the passed `JLayer`
    See Also:
      `JComponent.getMaximumSize()`, `LayoutManager2.maximumLayoutSize(java.awt.Container)`

  - ### paintImmediately

    public void paintImmediately​(int x, int y, int width, int height, JLayer<? extends V> l)
    Paints the specified region in the `JLayer` this `LayerUI` is set to, immediately.

    This method is to be overridden when the dirty region needs to be changed. The default implementation delegates its functionality to `JComponent.paintImmediately(int, int, int, int)`.

    Parameters:
      `x` - the x value of the region to be painted
      `y` - the y value of the region to be painted
      `width` - the width of the region to be painted
      `height` - the height of the region to be painted
      `l` - a `JLayer` component
    See Also:
      `JComponent.paintImmediately(int, int, int, int)`

  - ### imageUpdate

    public boolean imageUpdate​(Image img, int infoflags, int x, int y, int w, int h, JLayer<? extends V> l)
    Delegates its functionality to the default implementation of the `JLayer.imageUpdate` method which is inherited from `JLayer`'s base classes.

    This method is to be overridden instead of `JLayer.imageUpdate`.

    Note: This method is usually called not on the Event Dispatching Thread.

    Parameters:
      `img` - the image being observed
      `infoflags` - see imageUpdate for information
      `x` - the x coordinate
      `y` - the y coordinate
      `w` - the width
      `h` - the height
      `l` - a `JLayer` component
    Returns:
      false if the infoflags indicate that the image is completely loaded; true otherwise