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

# Class MetalTreeUI

java.lang.Object
javax.swing.plaf.ComponentUI
javax.swing.plaf.TreeUI
javax.swing.plaf.basic.BasicTreeUI
javax.swing.plaf.metal.MetalTreeUI

public class MetalTreeUI extends BasicTreeUI
The metal look and feel implementation of `TreeUI`.

`MetalTreeUI` allows for configuring how to visually render the spacing and delineation between nodes. The following hints are supported:

Descriptions of supported hints: Angled, Horizontal, and None
Hint | Description
--- | ---
Angled | A line is drawn connecting the child to the parent. For handling of the root node refer to `JTree.setRootVisible(boolean)` and `JTree.setShowsRootHandles(boolean)`.
Horizontal | A horizontal line is drawn dividing the children of the root node.
None | Do not draw any visual indication between nodes.

As it is typically impractical to obtain the `TreeUI` from the `JTree` and cast to an instance of `MetalTreeUI` you enable this property via the client property `JTree.lineStyle`. For example, to switch to `Horizontal` style you would do: `tree.putClientProperty("JTree.lineStyle", "Horizontal");`

The default is `Angled`.

- ## Nested Class Summary

  ### Nested classes/interfaces declared in class 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 declared in class 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`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `MetalTreeUI()`
  Constructs the `MetalTreeUI`.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static ComponentUI`
  `createUI(JComponent x)`
  Constructs the `MetalTreeUI`.
  `protected void`
  `decodeLineStyle(Object lineStyleFlag)`
  Converts between the string passed into the client property and the internal representation (currently and int)
  `protected boolean`
  `isLocationInExpandControl(int row, int rowLevel, int mouseX, int mouseY)`
  Returns `true` if a point with X coordinate `mouseX` and Y coordinate `mouseY` is in expanded control.
  `protected void`
  `paintHorizontalSeparators(Graphics g, JComponent c)`
  Paints the horizontal separators.

  ### Methods declared in class BasicTreeUI

  `cancelEditing, checkForClickInExpandControl, completeEditing, completeEditing, completeUIInstall, completeUIUninstall, configureLayoutCache, createCellEditorListener, createCellRendererPane, createComponentListener, createDefaultCellEditor, createDefaultCellRenderer, createFocusListener, createKeyListener, createLayoutCache, createMouseListener, createNodeDimensions, createPropertyChangeListener, createSelectionModelPropertyChangeListener, createTreeExpansionListener, createTreeModelListener, createTreeSelectionListener, drawCentered, drawDashedHorizontalLine, drawDashedVerticalLine, ensureRowsAreVisible, getBaseline, getBaselineResizeBehavior, getCellEditor, getCellRenderer, getClosestPathForLocation, getCollapsedIcon, getDropLineRect, getEditingPath, getExpandedIcon, getHashColor, getHorizontalLegBuffer, getLastChildPath, getLeadSelectionRow, getLeftChildIndent, getMaximumSize, getMinimumSize, getModel, getPathBounds, getPathForRow, getPreferredMinSize, getPreferredSize, getPreferredSize, getRightChildIndent, getRowCount, getRowForPath, getRowHeight, getRowX, getSelectionModel, getShowsRootHandles, getVerticalLegBuffer, handleExpandControlClick, installComponents, installDefaults, installKeyboardActions, installListeners, isDropLine, isEditable, isEditing, isLargeModel, isLeaf, isLocationInExpandControl, isMultiSelectEvent, isRootVisible, isToggleEvent, isToggleSelectionEvent, paintDropLine, paintExpandControl, paintHorizontalLine, paintHorizontalPartOfLeg, paintRow, paintVerticalLine, paintVerticalPartOfLeg, 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, uninstallDefaults, uninstallKeyboardActions, uninstallListeners, updateCachedPreferredSize, updateCellEditor, updateDepthOffset, updateExpandedDescendants, updateLayoutCacheExpandedNodes, updateLeadSelectionRow, updateRenderer, updateSize`

  ### Methods declared in class ComponentUI

  `contains, getAccessibleChild, getAccessibleChildrenCount, installUI, paint, uninstallUI, update`

  ### Methods declared in class Object

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

- ## Constructor Details

  - ### MetalTreeUI

    public MetalTreeUI()
    Constructs the `MetalTreeUI`.

- ## Method Details

  - ### createUI

    public static ComponentUI createUI(JComponent x)
    Constructs the `MetalTreeUI`.
    Parameters:
      `x` - a component
    Returns:
      the instance of the `MetalTreeUI`

  - ### decodeLineStyle

    protected void decodeLineStyle(Object lineStyleFlag)
    Converts between the string passed into the client property and the internal representation (currently and int)
    Parameters:
      `lineStyleFlag` - a flag

  - ### isLocationInExpandControl

    protected boolean isLocationInExpandControl(int row, int rowLevel, int mouseX, int mouseY)
    Returns `true` if a point with X coordinate `mouseX` and Y coordinate `mouseY` is in expanded control.
    Parameters:
      `row` - a row
      `rowLevel` - a row level
      `mouseX` - X coordinate
      `mouseY` - Y coordinate
    Returns:
      `true` if a point with X coordinate `mouseX` and Y coordinate `mouseY` is in expanded control.

  - ### paintHorizontalSeparators

    protected void paintHorizontalSeparators(Graphics g, JComponent c)
    Paints the horizontal separators.
    Parameters:
      `g` - an instance of `Graphics`
      `c` - a component