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 Detail

    - #### LayerUI

          public LayerUI()

  - ### Method Detail

    - #### 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