javax.swing.plaf.synth

## Class SynthLookAndFeel

- java.lang.Object
- - javax.swing.LookAndFeel
  - - javax.swing.plaf.basic.BasicLookAndFeel
    - - javax.swing.plaf.synth.SynthLookAndFeel

- All Implemented Interfaces:
    Serializable

      public class SynthLookAndFeel
      extends BasicLookAndFeel

  SynthLookAndFeel provides the basis for creating a customized look and feel. SynthLookAndFeel does not directly provide a look, all painting is delegated. You need to either provide a configuration file, by way of the `load(java.io.InputStream, java.lang.Class)` method, or provide your own `SynthStyleFactory` to `setStyleFactory(javax.swing.plaf.synth.SynthStyleFactory)`. Refer to the package summary for an example of loading a file, and `SynthStyleFactory` for an example of providing your own `SynthStyleFactory` to `setStyleFactory`.

  Warning: This class implements `Serializable` as a side effect of it extending `BasicLookAndFeel`. It is not intended to be serialized. An attempt to serialize it will result in `NotSerializableException`.

  Since:
    1.5

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `SynthLookAndFeel()` Creates a SynthLookAndFeel.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `static ComponentUI` | `createUI(JComponent c)` Creates the Synth look and feel `ComponentUI` for the passed in `JComponent`.
    `UIDefaults` | `getDefaults()` Returns the defaults for this SynthLookAndFeel.
    `String` | `getDescription()` Returns a textual description of SynthLookAndFeel.
    `String` | `getID()` Return a string that identifies this look and feel.
    `String` | `getName()` Return a short string that identifies this look and feel.
    `static Region` | `getRegion(JComponent c)` Returns the Region for the JComponent `c`.
    `static SynthStyle` | `getStyle(JComponent c, Region region)` Gets a SynthStyle for the specified region of the specified component.
    `static SynthStyleFactory` | `getStyleFactory()` Returns the current SynthStyleFactory.
    `void` | `initialize()` Called by UIManager when this look and feel is installed.
    `boolean` | `isNativeLookAndFeel()` Returns false, SynthLookAndFeel is not a native look and feel.
    `boolean` | `isSupportedLookAndFeel()` Returns true, SynthLookAndFeel is always supported.
    `void` | `load(InputStream input, Class<?> resourceBase)` Loads the set of `SynthStyle`s that will be used by this `SynthLookAndFeel`.
    `void` | `load(URL url)` Loads the set of `SynthStyle`s that will be used by this `SynthLookAndFeel`.
    `static void` | `setStyleFactory(SynthStyleFactory cache)` Sets the SynthStyleFactory that the UI classes provided by synth will use to obtain a SynthStyle.
    `boolean` | `shouldUpdateStyleOnAncestorChanged()` Returns whether or not the UIs should update their `SynthStyles` from the `SynthStyleFactory` when the ancestor of the `JComponent` changes.
    `void` | `uninitialize()` Called by UIManager when this look and feel is uninstalled.
    `static void` | `updateStyles(Component c)` Updates the style associated with `c`, and all its children.

    - ### Methods inherited from class javax.swing.plaf.basic.BasicLookAndFeel

      `createAudioAction, getAudioActionMap, initClassDefaults, initComponentDefaults, initSystemColorDefaults, loadSystemColors, playSound`

    - ### Methods inherited from class javax.swing.LookAndFeel

      `getDesktopPropertyValue, getDisabledIcon, getDisabledSelectedIcon, getLayoutStyle, getSupportsWindowDecorations, installBorder, installColors, installColorsAndFont, installProperty, loadKeyBindings, makeComponentInputMap, makeIcon, makeInputMap, makeKeyBindings, provideErrorFeedback, toString, uninstallBorder`

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

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

- - ### Constructor Detail

    - #### SynthLookAndFeel

          public SynthLookAndFeel()

      Creates a SynthLookAndFeel.

      For the returned `SynthLookAndFeel` to be useful you need to invoke `load` to specify the set of `SynthStyle`s, or invoke `setStyleFactory`.

      See Also:
        `load(java.io.InputStream, java.lang.Class)`, `setStyleFactory(javax.swing.plaf.synth.SynthStyleFactory)`

  - ### Method Detail

    - #### setStyleFactory

          public static void setStyleFactory(SynthStyleFactory cache)

      Sets the SynthStyleFactory that the UI classes provided by synth will use to obtain a SynthStyle.
      Parameters:
        `cache` - SynthStyleFactory the UIs should use.

    - #### getStyleFactory

          public static SynthStyleFactory getStyleFactory()

      Returns the current SynthStyleFactory.
      Returns:
        SynthStyleFactory

    - #### getStyle

          public static SynthStyle getStyle(JComponent c,
                            Region region)

      Gets a SynthStyle for the specified region of the specified component. This is not for general consumption, only custom UIs should call this method.
      Parameters:
        `c` - JComponent to get the SynthStyle for
        `region` - Identifies the region of the specified component
      Returns:
        SynthStyle to use.

    - #### updateStyles

          public static void updateStyles(Component c)

      Updates the style associated with `c`, and all its children. This is a lighter version of `SwingUtilities.updateComponentTreeUI`.
      Parameters:
        `c` - Component to update style for.

    - #### getRegion

          public static Region getRegion(JComponent c)

      Returns the Region for the JComponent `c`.
      Parameters:
        `c` - JComponent to fetch the Region for
      Returns:
        Region corresponding to `c`

    - #### createUI

          public static ComponentUI createUI(JComponent c)

      Creates the Synth look and feel `ComponentUI` for the passed in `JComponent`.
      Parameters:
        `c` - JComponent to create the `ComponentUI` for
      Returns:
        ComponentUI to use for `c`

    - #### load

          public void load(InputStream input,
                  Class<?> resourceBase)
                    throws ParseException

      Loads the set of `SynthStyle`s that will be used by this `SynthLookAndFeel`. `resourceBase` is used to resolve any path based resources, for example an `Image` would be resolved by `resourceBase.getResource(path)`. Refer to Synth File Format for more information.
      Parameters:
        `input` - InputStream to load from
        `resourceBase` - used to resolve any images or other resources
      Throws:
        `ParseException` - if there is an error in parsing
        `IllegalArgumentException` - if input or resourceBase is `null`

    - #### load

          public void load(URL url)
                    throws ParseException,
                           IOException

      Loads the set of `SynthStyle`s that will be used by this `SynthLookAndFeel`. Path based resources are resolved relatively to the specified `URL` of the style. For example an `Image` would be resolved by `new URL(synthFile, path)`. Refer to Synth File Format for more information.
      Parameters:
        `url` - the `URL` to load the set of `SynthStyle` from
      Throws:
        `ParseException` - if there is an error in parsing
        `IllegalArgumentException` - if synthSet is `null`
        `IOException` - if synthSet cannot be opened as an `InputStream`
      Since:
        1.6

    - #### initialize

          public void initialize()

      Called by UIManager when this look and feel is installed.
      Overrides:
        `initialize` in class `BasicLookAndFeel`
      See Also:
        `LookAndFeel.uninitialize()`, `UIManager.setLookAndFeel(javax.swing.LookAndFeel)`

    - #### uninitialize

          public void uninitialize()

      Called by UIManager when this look and feel is uninstalled.
      Overrides:
        `uninitialize` in class `BasicLookAndFeel`
      See Also:
        `LookAndFeel.initialize()`, `UIManager.setLookAndFeel(javax.swing.LookAndFeel)`

    - #### getDefaults

          public UIDefaults getDefaults()

      Returns the defaults for this SynthLookAndFeel.
      Overrides:
        `getDefaults` in class `BasicLookAndFeel`
      Returns:
        Defaults table.
      See Also:
        `BasicLookAndFeel.initClassDefaults(javax.swing.UIDefaults)`, `BasicLookAndFeel.initSystemColorDefaults(javax.swing.UIDefaults)`, `BasicLookAndFeel.initComponentDefaults(javax.swing.UIDefaults)`

    - #### isSupportedLookAndFeel

          public boolean isSupportedLookAndFeel()

      Returns true, SynthLookAndFeel is always supported.
      Specified by:
        `isSupportedLookAndFeel` in class `LookAndFeel`
      Returns:
        true.
      See Also:
        `UIManager.setLookAndFeel(javax.swing.LookAndFeel)`

    - #### isNativeLookAndFeel

          public boolean isNativeLookAndFeel()

      Returns false, SynthLookAndFeel is not a native look and feel.
      Specified by:
        `isNativeLookAndFeel` in class `LookAndFeel`
      Returns:
        false

    - #### getDescription

          public String getDescription()

      Returns a textual description of SynthLookAndFeel.
      Specified by:
        `getDescription` in class `LookAndFeel`
      Returns:
        textual description of synth.

    - #### getName

          public String getName()

      Return a short string that identifies this look and feel.
      Specified by:
        `getName` in class `LookAndFeel`
      Returns:
        a short string identifying this look and feel.

    - #### getID

          public String getID()

      Return a string that identifies this look and feel.
      Specified by:
        `getID` in class `LookAndFeel`
      Returns:
        a short string identifying this look and feel.

    - #### shouldUpdateStyleOnAncestorChanged

          public boolean shouldUpdateStyleOnAncestorChanged()

      Returns whether or not the UIs should update their `SynthStyles` from the `SynthStyleFactory` when the ancestor of the `JComponent` changes. A subclass that provided a `SynthStyleFactory` that based the return value from `getStyle` off the containment hierarchy would override this method to return true.
      Returns:
        whether or not the UIs should update their `SynthStyles` from the `SynthStyleFactory` when the ancestor changed.

Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.

Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.