javax.swing.plaf.synth

## Class SynthTreeUI

- java.lang.Object
- - javax.swing.plaf.ComponentUI
  - - javax.swing.plaf.TreeUI
    - - javax.swing.plaf.basic.BasicTreeUI
      - - javax.swing.plaf.synth.SynthTreeUI

- All Implemented Interfaces:
    PropertyChangeListener, EventListener, SynthConstants, SynthUI

      public class SynthTreeUI
      extends BasicTreeUI
      implements PropertyChangeListener, SynthUI

  Provides the Synth L&F UI delegate for `JTree`.
  Since:
    1.7

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class javax.swing.plaf.basic.BasicTreeUI

      `BasicTreeUI.CellEditorHandler, BasicTreeUI.ComponentHandler, BasicTreeUI.FocusHandler, BasicTreeUI.KeyHandler, BasicTreeUI.MouseHandler, BasicTreeUI.MouseInputHandler, BasicTreeUI.NodeDimensionsHandler, BasicTreeUI.PropertyChangeHandler, BasicTreeUI.SelectionModelPropertyChangeHandler, BasicTreeUI.TreeCancelEditingAction, BasicTreeUI.TreeExpansionHandler, BasicTreeUI.TreeHomeAction, BasicTreeUI.TreeIncrementAction, BasicTreeUI.TreeModelHandler, BasicTreeUI.TreePageAction, BasicTreeUI.TreeSelectionHandler, BasicTreeUI.TreeToggleAction, BasicTreeUI.TreeTraverseAction`

  - ### Field Summary

    - ### Fields inherited from class javax.swing.plaf.basic.BasicTreeUI

      `cellEditor, collapsedIcon, createdCellEditor, createdRenderer, currentCellRenderer, depthOffset, drawingCache, editingComponent, editingPath, editingRow, editorHasDifferentSize, expandedIcon, largeModel, lastSelectedRow, leftChildIndent, nodeDimensions, preferredMinSize, preferredSize, rendererPane, rightChildIndent, stopEditingInCompleteEditing, totalChildIndent, tree, treeModel, treeSelectionModel, treeState, validCachedPreferredSize`

    - ### Fields inherited from interface javax.swing.plaf.synth.SynthConstants

      `DEFAULT, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED, SELECTED`

  - ### Constructor Summary

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

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `protected TreeCellEditor` | `createDefaultCellEditor()` | Creates a default cell editor.
    `protected TreeCellRenderer` | `createDefaultCellRenderer()` | Returns the default cell renderer that is used to do the stamping of each node.
    `static ComponentUI` | `createUI(JComponent x)` | Creates a new UI object for the given component.
    `protected void` | `drawCentered(Component c, Graphics graphics, Icon icon, int x, int y)`
    `SynthContext` | `getContext(JComponent c)` | Returns the Context for the specified component.
    `Icon` | `getExpandedIcon()`
    `protected int` | `getRowX(int row, int depth)` | Returns the location, along the x-axis, to render a particular row at.
    `protected void` | `installDefaults()`
    `protected void` | `installListeners()`
    `void` | `paint(Graphics g, JComponent c)` | Paints the specified component according to the Look and Feel.
    `protected void` | `paint(SynthContext context, Graphics g)` | Paints the specified component.
    `void` | `paintBorder(SynthContext context, Graphics g, int x, int y, int w, int h)` | Paints the border.
    `protected void` | `paintDropLine(Graphics g)` | Paints the drop line.
    `protected void` | `paintExpandControl(Graphics g, Rectangle clipBounds, Insets insets, Rectangle bounds, TreePath path, int row, boolean isExpanded, boolean hasBeenExpanded, boolean isLeaf)` | Paints the expand (toggle) part of a row.
    `protected void` | `paintHorizontalLine(Graphics g, JComponent c, int y, int left, int right)` | Paints a horizontal line.
    `protected void` | `paintHorizontalPartOfLeg(Graphics g, Rectangle clipBounds, Insets insets, Rectangle bounds, TreePath path, int row, boolean isExpanded, boolean hasBeenExpanded, boolean isLeaf)` | Paints the horizontal part of the leg.
    `protected void` | `paintVerticalLine(Graphics g, JComponent c, int x, int top, int bottom)` | Paints a vertical line.
    `protected void` | `paintVerticalPartOfLeg(Graphics g, Rectangle clipBounds, Insets insets, TreePath path)` | Paints the vertical part of the leg.
    `void` | `propertyChange(PropertyChangeEvent event)` | This method gets called when a bound property is changed.
    `protected void` | `uninstallDefaults()`
    `protected void` | `uninstallListeners()`
    `void` | `update(Graphics g, JComponent c)` | Notifies this UI delegate to repaint the specified component.

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

      `cancelEditing, checkForClickInExpandControl, completeEditing, completeEditing, completeUIInstall, completeUIUninstall, configureLayoutCache, createCellEditorListener, createCellRendererPane, createComponentListener, createFocusListener, createKeyListener, createLayoutCache, createMouseListener, createNodeDimensions, createPropertyChangeListener, createSelectionModelPropertyChangeListener, createTreeExpansionListener, createTreeModelListener, createTreeSelectionListener, drawDashedHorizontalLine, drawDashedVerticalLine, ensureRowsAreVisible, getBaseline, getBaselineResizeBehavior, getCellEditor, getCellRenderer, getClosestPathForLocation, getCollapsedIcon, getDropLineRect, getEditingPath, getHashColor, getHorizontalLegBuffer, getLastChildPath, getLeadSelectionRow, getLeftChildIndent, getMaximumSize, getMinimumSize, getModel, getPathBounds, getPathForRow, getPreferredMinSize, getPreferredSize, getPreferredSize, getRightChildIndent, getRowCount, getRowForPath, getRowHeight, getSelectionModel, getShowsRootHandles, getVerticalLegBuffer, handleExpandControlClick, installComponents, installKeyboardActions, installUI, isDropLine, isEditable, isEditing, isLargeModel, isLeaf, isLocationInExpandControl, isMultiSelectEvent, isRootVisible, isToggleEvent, isToggleSelectionEvent, paintRow, pathWasCollapsed, pathWasExpanded, prepareForUIInstall, prepareForUIUninstall, selectPathForEvent, setCellEditor, setCellRenderer, setCollapsedIcon, setEditable, setExpandedIcon, setHashColor, setLargeModel, setLeftChildIndent, setModel, setPreferredMinSize, setRightChildIndent, setRootVisible, setRowHeight, setSelectionModel, setShowsRootHandles, shouldPaintExpandControl, startEditing, startEditingAtPath, stopEditing, toggleExpandState, uninstallComponents, uninstallKeyboardActions, uninstallUI, updateCachedPreferredSize, updateCellEditor, updateDepthOffset, updateExpandedDescendants, updateLayoutCacheExpandedNodes, updateLeadSelectionRow, updateRenderer, updateSize`

    - ### Methods inherited from class javax.swing.plaf.ComponentUI

      `contains, getAccessibleChild, getAccessibleChildrenCount`

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

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

- - ### Constructor Detail

    - #### SynthTreeUI

          public SynthTreeUI()

  - ### Method Detail

    - #### createUI

          public static ComponentUI createUI(JComponent x)

      Creates a new UI object for the given component.
      Parameters:
        `x` - component to create UI object for
      Returns:
        the UI object

    - #### getExpandedIcon

          public Icon getExpandedIcon()

      Overrides:
        `getExpandedIcon` in class `BasicTreeUI`

    - #### installDefaults

          protected void installDefaults()

      Overrides:
        `installDefaults` in class `BasicTreeUI`

    - #### installListeners

          protected void installListeners()

      Overrides:
        `installListeners` in class `BasicTreeUI`

    - #### getContext

          public SynthContext getContext(JComponent c)

      Returns the Context for the specified component.
      Specified by:
        `getContext` in interface `SynthUI`
      Parameters:
        `c` - Component requesting SynthContext.
      Returns:
        SynthContext describing component.

    - #### createDefaultCellEditor

          protected TreeCellEditor createDefaultCellEditor()

      Creates a default cell editor.
      Overrides:
        `createDefaultCellEditor` in class `BasicTreeUI`

    - #### createDefaultCellRenderer

          protected TreeCellRenderer createDefaultCellRenderer()

      Returns the default cell renderer that is used to do the stamping of each node.
      Overrides:
        `createDefaultCellRenderer` in class `BasicTreeUI`

    - #### uninstallDefaults

          protected void uninstallDefaults()

      Overrides:
        `uninstallDefaults` in class `BasicTreeUI`

    - #### uninstallListeners

          protected void uninstallListeners()

      Overrides:
        `uninstallListeners` in class `BasicTreeUI`

    - #### update

          public void update(Graphics g,
                             JComponent c)

      Notifies this UI delegate to repaint the specified component. This method paints the component background, then calls the `paint(SynthContext,Graphics)` method.

      In general, this method does not need to be overridden by subclasses. All Look and Feel rendering code should reside in the `paint` method.

      Overrides:
        `update` in class `ComponentUI`
      Parameters:
        `g` - the `Graphics` object used for painting
        `c` - the component being painted
      See Also:
        `paint(SynthContext,Graphics)`

    - #### paintBorder

          public void paintBorder(SynthContext context,
                                  Graphics g,
                                  int x,
                                  int y,
                                  int w,
                                  int h)

      Paints the border.
      Specified by:
        `paintBorder` in interface `SynthUI`
      Parameters:
        `context` - a component context
        `g` - `Graphics` to paint on
        `x` - the X coordinate
        `y` - the Y coordinate
        `w` - width of the border
        `h` - height of the border

    - #### paint

          public void paint(Graphics g,
                            JComponent c)

      Paints the specified component according to the Look and Feel.

      This method is not used by Synth Look and Feel. Painting is handled by the `paint(SynthContext,Graphics)` method.

      Overrides:
        `paint` in class `BasicTreeUI`
      Parameters:
        `g` - the `Graphics` object used for painting
        `c` - the component being painted
      See Also:
        `paint(SynthContext,Graphics)`

    - #### paint

          protected void paint(SynthContext context,
                               Graphics g)

      Paints the specified component.
      Parameters:
        `context` - context for the component being painted
        `g` - the `Graphics` object used for painting
      See Also:
        `update(Graphics,JComponent)`

    - #### paintHorizontalPartOfLeg

          protected void paintHorizontalPartOfLeg(Graphics g,
                                                  Rectangle clipBounds,
                                                  Insets insets,
                                                  Rectangle bounds,
                                                  TreePath path,
                                                  int row,
                                                  boolean isExpanded,
                                                  boolean hasBeenExpanded,
                                                  boolean isLeaf)

      Paints the horizontal part of the leg. The receiver should NOT modify `clipBounds`, or `insets`.

      NOTE: `parentRow` can be -1 if the root is not visible.

      Overrides:
        `paintHorizontalPartOfLeg` in class `BasicTreeUI`

    - #### paintHorizontalLine

          protected void paintHorizontalLine(Graphics g,
                                             JComponent c,
                                             int y,
                                             int left,
                                             int right)

      Paints a horizontal line.
      Overrides:
        `paintHorizontalLine` in class `BasicTreeUI`

    - #### paintVerticalPartOfLeg

          protected void paintVerticalPartOfLeg(Graphics g,
                                                Rectangle clipBounds,
                                                Insets insets,
                                                TreePath path)

      Paints the vertical part of the leg. The receiver should NOT modify `clipBounds`, `insets`.
      Overrides:
        `paintVerticalPartOfLeg` in class `BasicTreeUI`

    - #### paintVerticalLine

          protected void paintVerticalLine(Graphics g,
                                           JComponent c,
                                           int x,
                                           int top,
                                           int bottom)

      Paints a vertical line.
      Overrides:
        `paintVerticalLine` in class `BasicTreeUI`

    - #### paintExpandControl

          protected void paintExpandControl(Graphics g,
                                            Rectangle clipBounds,
                                            Insets insets,
                                            Rectangle bounds,
                                            TreePath path,
                                            int row,
                                            boolean isExpanded,
                                            boolean hasBeenExpanded,
                                            boolean isLeaf)

      Paints the expand (toggle) part of a row. The receiver should NOT modify `clipBounds`, or `insets`.
      Overrides:
        `paintExpandControl` in class `BasicTreeUI`

    - #### drawCentered

          protected void drawCentered(Component c,
                                      Graphics graphics,
                                      Icon icon,
                                      int x,
                                      int y)

      Overrides:
        `drawCentered` in class `BasicTreeUI`

    - #### propertyChange

          public void propertyChange(PropertyChangeEvent event)

      This method gets called when a bound property is changed.
      Specified by:
        `propertyChange` in interface `PropertyChangeListener`
      Parameters:
        `event` - A PropertyChangeEvent object describing the event source and the property that has changed.

    - #### paintDropLine

          protected void paintDropLine(Graphics g)

      Paints the drop line.
      Overrides:
        `paintDropLine` in class `BasicTreeUI`
      Parameters:
        `g` - `Graphics` object to draw on

    - #### getRowX

          protected int getRowX(int row,
                                int depth)

      Returns the location, along the x-axis, to render a particular row at. The return value does not include any Insets specified on the JTree. This does not check for the validity of the row or depth, it is assumed to be correct and will not throw an Exception if the row or depth doesn't match that of the tree.
      Overrides:
        `getRowX` in class `BasicTreeUI`
      Parameters:
        `row` - Row to return x location for
        `depth` - Depth of the row
      Returns:
        amount to indent the given row.

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, 2026, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.