org.apache.jorphan.gui

## Class DynamicStyle

- java.lang.Object
- - org.apache.jorphan.gui.DynamicStyle

-     @API(since="5.3",
           status=EXPERIMENTAL)
      public class DynamicStyle
      extends Object

  By default, Swing does not provide a way to augment components when look and feel changes. There's `JComponent.updateUI()`, however, it requires to sub-class component class.

  `DynamicStyle` enables to augment the components (e.g. border, font, color) as LaF changes

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `DynamicStyle()`

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `static Closeable` | `onLaFChange(Runnable action)` Schedules an action to be executed after each Look and Feel change.
    `void` | `updateComponentTreeUI(Component root)` Updates UI for the components under a given component.
    `void` | `updateLaf()` Re-initializes the current LaF and updates the UI for all the open windows.
    `void` | `updateLaf(String className)` Set new look and feel for all the open windows.
    `<T extends JComponent> T` | `withBorder(T component, String resource)`
    `<T extends JComponent> T` | `withDynamic(T component, Consumer<T> onUpdateUi)` Attaches a configuration action that is executed when Look and Feel changes.
    `<T extends JComponent> T` | `withFont(T component, String resource)`

    - ### Methods inherited from class java.lang.Object

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

- - ### Constructor Detail

    - #### DynamicStyle

          public DynamicStyle()

  - ### Method Detail

    - #### withDynamic

          @API(since="5.3",
               status=EXPERIMENTAL)
          public <T extends JComponent> T withDynamic(T component,
                                                                                                  Consumer<T> onUpdateUi)

      Attaches a configuration action that is executed when Look and Feel changes.

      Note: the action is executed when `withDynamic` is called, and the action is executed even if the new and the old LaFs are the same.

      Type Parameters:
        `T` - type of the component
      Parameters:
        `component` - component to update
        `onUpdateUi` - action to run (immediately and when look and feel changes)
      Returns:
        input component (e.g. for fluent APIs)

    - #### withBorder

          @API(since="5.3",
               status=EXPERIMENTAL)
          public <T extends JComponent> T withBorder(T component,
                                                                                                 String resource)

    - #### withFont

          @API(since="5.3",
               status=EXPERIMENTAL)
          public <T extends JComponent> T withFont(T component,
                                                                                               String resource)

    - #### onLaFChange

          @API(since="5.3",
               status=EXPERIMENTAL)
          public static Closeable onLaFChange(Runnable action)

      Schedules an action to be executed after each Look and Feel change.
      Parameters:
        `action` - action to execute
      Returns:
        a handle that can be used to un-register the listener

    - #### updateLaf

          @API(since="5.3",
               status=EXPERIMENTAL)
          public void updateLaf()

      Re-initializes the current LaF and updates the UI for all the open windows.

    - #### updateLaf

          @API(since="5.3",
               status=EXPERIMENTAL)
          public void updateLaf(String className)

      Set new look and feel for all the open windows.
      Parameters:
        `className` - look and feel class name

    - #### updateComponentTreeUI

          @API(since="5.3",
               status=EXPERIMENTAL)
          public void updateComponentTreeUI(Component root)

      Updates UI for the components under a given component.
      Parameters:
        `root` - the root of the hierarchy to update

Copyright © 1998-2022 Apache Software Foundation. All Rights Reserved.