Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| Java™ Platform Standard Ed. 6
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## javax.swing.tree
Interface TreeModel

All Known Implementing Classes:
  DefaultTreeModel

    public interface TreeModel

The model used by `JTree`.

`JTree` and its related classes make extensive use of `TreePath`s for indentifying nodes in the `TreeModel`. If a `TreeModel` returns the same object, as compared by `equals`, at two different indices under the same parent than the resulting `TreePath` objects will be considered equal as well. Some implementations may assume that if two `TreePath`s are equal, they identify the same node. If this condition is not met, painting problems and other oddities may result. In other words, if `getChild` for a given parent returns the same Object (as determined by `equals`) problems may result, and it is recommended you avoid doing this.

Similarly `JTree` and its related classes place `TreePath`s in `Map`s. As such if a node is requested twice, the return values must be equal (using the `equals` method) and have the same `hashCode`.

For further information on tree models, including an example of a custom implementation, see How to Use Trees in The Java Tutorial.

See Also:
  `TreePath`

Method Summary
`void` | `addTreeModelListener(TreeModelListener l)` Adds a listener for the `TreeModelEvent` posted after the tree changes.
`Object` | `getChild(Object parent, int index)` Returns the child of `parent` at index `index` in the parent's child array.
`int` | `getChildCount(Object parent)` Returns the number of children of `parent`.
`int` | `getIndexOfChild(Object parent, Object child)` Returns the index of child in parent.
`Object` | `getRoot()` Returns the root of the tree.
`boolean` | `isLeaf(Object node)` Returns `true` if `node` is a leaf.
`void` | `removeTreeModelListener(TreeModelListener l)` Removes a listener previously added with `addTreeModelListener`.
`void` | `valueForPathChanged(TreePath path, Object newValue)` Messaged when the user has altered the value for the item identified by `path` to `newValue`.

Method Detail

### getRoot

    Object getRoot()

  Returns the root of the tree. Returns `null` only if the tree has no nodes.

  Returns:
    the root of the tree

### getChild

    Object getChild(Object parent,
                    int index)

  Returns the child of `parent` at index `index` in the parent's child array. `parent` must be a node previously obtained from this data source. This should not return `null` if `index` is a valid index for `parent` (that is `index >= 0 && index < getChildCount(parent`)).

  Parameters:
    `parent` - a node in the tree, obtained from this data source
  Returns:
    the child of `parent` at index `index`

### getChildCount

    int getChildCount(Object parent)

  Returns the number of children of `parent`. Returns 0 if the node is a leaf or if it has no children. `parent` must be a node previously obtained from this data source.

  Parameters:
    `parent` - a node in the tree, obtained from this data source
  Returns:
    the number of children of the node `parent`

### isLeaf

    boolean isLeaf(Object node)

  Returns `true` if `node` is a leaf. It is possible for this method to return `false` even if `node` has no children. A directory in a filesystem, for example, may contain no files; the node representing the directory is not a leaf, but it also has no children.

  Parameters:
    `node` - a node in the tree, obtained from this data source
  Returns:
    true if `node` is a leaf

### valueForPathChanged

    void valueForPathChanged(TreePath path,
                             Object newValue)

  Messaged when the user has altered the value for the item identified by `path` to `newValue`. If `newValue` signifies a truly new value the model should post a `treeNodesChanged` event.

  Parameters:
    `path` - path to the node that the user has altered
    `newValue` - the new value from the TreeCellEditor

### getIndexOfChild

    int getIndexOfChild(Object parent,
                        Object child)

  Returns the index of child in parent. If either `parent` or `child` is `null`, returns -1. If either `parent` or `child` don't belong to this tree model, returns -1.

  Parameters:
    `parent` - a node in the tree, obtained from this data source
    `child` - the node we are interested in
  Returns:
    the index of the child in the parent, or -1 if either `child` or `parent` are `null` or don't belong to this tree model

### addTreeModelListener

    void addTreeModelListener(TreeModelListener l)

  Adds a listener for the `TreeModelEvent` posted after the tree changes.

  Parameters:
    `l` - the listener to add
  See Also:
    `removeTreeModelListener(javax.swing.event.TreeModelListener)`

### removeTreeModelListener

    void removeTreeModelListener(TreeModelListener l)

  Removes a listener previously added with `addTreeModelListener`.

  Parameters:
    `l` - the listener to remove
  See Also:
    `addTreeModelListener(javax.swing.event.TreeModelListener)`

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| Java™ Platform Standard Ed. 6
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

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

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