public class MetalTreeUI extends BasicTreeUI
TreeUI.
 
 MetalTreeUI allows for configuring how to
 visually render the spacing and delineation between nodes. The following
 hints are supported:
 
| Angled | A line is drawn connecting the child to the parent. For handling
          of the root node refer to JTree.setRootVisible(boolean)andJTree.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.
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.TreeTraverseActioncellEditor, 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 | Description | 
|---|---|
| MetalTreeUI() | 
| Modifier and Type | Method | Description | 
|---|---|---|
| static ComponentUI | createUI(JComponent x) | |
| protected void | decodeLineStyle(Object lineStyleFlag) | this function converts between the string passed into the client property
 and the internal representation (currently and int) | 
| protected int | getHorizontalLegBuffer() | The horizontal element of legs between nodes starts at the
 right of the left-hand side of the child node by default. | 
| void | installUI(JComponent c) | Configures the specified component appropriately for the look and feel. | 
| protected boolean | isLocationInExpandControl(int row,
                         int rowLevel,
                         int mouseX,
                         int mouseY) | |
| void | paint(Graphics g,
     JComponent c) | Paints the specified component appropriately for the look and feel. | 
| 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 | paintHorizontalSeparators(Graphics g,
                         JComponent c) | |
| protected void | paintVerticalPartOfLeg(Graphics g,
                      Rectangle clipBounds,
                      Insets insets,
                      TreePath path) | Paints the vertical part of the leg. | 
| void | uninstallUI(JComponent c) | Reverses configuration which was done on the specified component during
  installUI. | 
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, 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, paintRow, paintVerticalLine, 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, updateSizecontains, getAccessibleChild, getAccessibleChildrenCount, updatepublic static ComponentUI createUI(JComponent x)
protected int getHorizontalLegBuffer()
BasicTreeUIgetHorizontalLegBuffer in class BasicTreeUIpublic void installUI(JComponent c)
ComponentUIComponentUI instance is being installed
 as the UI delegate on the specified component.  This method should
 completely configure the component for the look and feel,
 including the following:
 LayoutManager on the component if necessary.
 PropertyChangeListener on the component in order
     to detect and respond to component property changes appropriately.
 installUI in class BasicTreeUIc - the component where this UI delegate is being installedComponentUI.uninstallUI(javax.swing.JComponent), 
JComponent.setUI(javax.swing.plaf.ComponentUI), 
JComponent.updateUI()public void uninstallUI(JComponent c)
ComponentUIinstallUI.  This method is invoked when this
 UIComponent instance is being removed as the UI delegate
 for the specified component.  This method should undo the
 configuration performed in installUI, being careful to
 leave the JComponent instance in a clean state (no
 extraneous listeners, look-and-feel-specific property objects, etc.).
 This should include the following:
 uninstallUI in class BasicTreeUIc - the component from which this UI delegate is being removed;
          this argument is often ignored,
          but might be used if the UI object is stateless
          and shared by multiple componentsComponentUI.installUI(javax.swing.JComponent), 
JComponent.updateUI()protected void decodeLineStyle(Object lineStyleFlag)
protected boolean isLocationInExpandControl(int row,
                                            int rowLevel,
                                            int mouseX,
                                            int mouseY)
public void paint(Graphics g, JComponent c)
ComponentUIComponentUI.update method when
 the specified component is being painted.  Subclasses should override
 this method and use the specified Graphics object to
 render the content of the component.paint in class BasicTreeUIg - the Graphics context in which to paintc - the component being painted;
          this argument is often ignored,
          but might be used if the UI object is stateless
          and shared by multiple componentsComponentUI.update(java.awt.Graphics, javax.swing.JComponent)protected void paintHorizontalSeparators(Graphics g, JComponent c)
protected void paintVerticalPartOfLeg(Graphics g, Rectangle clipBounds, Insets insets, TreePath path)
BasicTreeUIclipBounds, insets.paintVerticalPartOfLeg in class BasicTreeUIprotected void paintHorizontalPartOfLeg(Graphics g, Rectangle clipBounds, Insets insets, Rectangle bounds, TreePath path, int row, boolean isExpanded, boolean hasBeenExpanded, boolean isLeaf)
BasicTreeUIclipBounds, or insets.
 NOTE: parentRow can be -1 if the root is not visible.
paintHorizontalPartOfLeg in class BasicTreeUI 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, 2025, Oracle and/or its affiliates.  All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.