MetalTreeUI (Java Platform SE 8 )
Keywords: javax.swing.plaf.metal.MetalTreeUI class
Date: 2018-07-01

javax.swing.plaf.metal

## 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:

  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 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`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `MetalTreeUI()`

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and 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`.

    - ### Methods inherited from class javax.swing.plaf.basic.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, 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, updateSize`

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

      `contains, getAccessibleChild, getAccessibleChildrenCount, update`

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

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

- - ### Constructor Detail

    - #### MetalTreeUI

          public MetalTreeUI()

  - ### Method Detail

    - #### createUI

          public static ComponentUI createUI(JComponent x)

    - #### getHorizontalLegBuffer

          protected int getHorizontalLegBuffer()

      Description copied from class: `BasicTreeUI`
      The horizontal element of legs between nodes starts at the right of the left-hand side of the child node by default. This method makes the leg end before that.
      Overrides:
        `getHorizontalLegBuffer` in class `BasicTreeUI`

    - #### installUI

          public void installUI(JComponent c)

      Description copied from class: `ComponentUI`
      Configures the specified component appropriately for the look and feel. This method is invoked when the `ComponentUI` 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:
      1. Install default property values for color, fonts, borders, icons, opacity, etc. on the component. Whenever possible, property values initialized by the client program should not be overridden.
      2. Install a `LayoutManager` on the component if necessary.
      3. Create/add any required sub-components to the component.
      4. Create/install event listeners on the component.
      5. Create/install a `PropertyChangeListener` on the component in order to detect and respond to component property changes appropriately.
      6. Install keyboard UI (mnemonics, traversal, etc.) on the component.
      7. Initialize any appropriate instance data.
      Overrides:
        `installUI` in class `BasicTreeUI`
      Parameters:
        `c` - the component where this UI delegate is being installed
      See Also:
        `ComponentUI.uninstallUI(javax.swing.JComponent)`, `JComponent.setUI(javax.swing.plaf.ComponentUI)`, `JComponent.updateUI()`

    - #### uninstallUI

          public void uninstallUI(JComponent c)

      Description copied from class: `ComponentUI`
      Reverses configuration which was done on the specified component during `installUI`. 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:
      1. Remove any UI-set borders from the component.
      2. Remove any UI-set layout managers on the component.
      3. Remove any UI-added sub-components from the component.
      4. Remove any UI-added event/property listeners from the component.
      5. Remove any UI-installed keyboard UI from the component.
      6. Nullify any allocated instance data objects to allow for GC.
      Overrides:
        `uninstallUI` in class `BasicTreeUI`
      Parameters:
        `c` - 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 components
      See Also:
        `ComponentUI.installUI(javax.swing.JComponent)`, `JComponent.updateUI()`

    - #### decodeLineStyle

          protected void decodeLineStyle(Object lineStyleFlag)

      this function converts between the string passed into the client property and the internal representation (currently and int)

    - #### isLocationInExpandControl

          protected boolean isLocationInExpandControl(int row,
                                                      int rowLevel,
                                                      int mouseX,
                                                      int mouseY)

    - #### paint

          public void paint(Graphics g,
                            JComponent c)

      Description copied from class: `ComponentUI`
      Paints the specified component appropriately for the look and feel. This method is invoked from the `ComponentUI.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.
      Overrides:
        `paint` in class `BasicTreeUI`
      Parameters:
        `g` - the `Graphics` context in which to paint
        `c` - the component being painted; this argument is often ignored, but might be used if the UI object is stateless and shared by multiple components
      See Also:
        `ComponentUI.update(java.awt.Graphics, javax.swing.JComponent)`

    - #### paintHorizontalSeparators

          protected void paintHorizontalSeparators(Graphics g,
                                                   JComponent c)

    - #### paintVerticalPartOfLeg

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

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

    - #### paintHorizontalPartOfLeg

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

      Description copied from class: `BasicTreeUI`
      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`

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