17
JTree javax.swing.tree javax.swing.even t

JTree javax.swing.tree javax.swing.event. Components JTree and JTable COMPONENT – Model – Selection Model – Editor – Renderer

Embed Size (px)

Citation preview

Page 1: JTree javax.swing.tree javax.swing.event. Components JTree and JTable COMPONENT – Model – Selection Model – Editor – Renderer

JTree

javax.swing.tree

javax.swing.event

Page 2: JTree javax.swing.tree javax.swing.event. Components JTree and JTable COMPONENT – Model – Selection Model – Editor – Renderer

ComponentsJTree and JTable

COMPONENT– Model– Selection Model– Editor – Renderer

Page 3: JTree javax.swing.tree javax.swing.event. Components JTree and JTable COMPONENT – Model – Selection Model – Editor – Renderer

JTree

Tree model– describes a JTree’s underlying data model. It

specifies how a tree is mapped over a data structure.

Tree selection Tree cell editor Tree cell renderer

Page 4: JTree javax.swing.tree javax.swing.event. Components JTree and JTable COMPONENT – Model – Selection Model – Editor – Renderer

Parts of trees

Root Parent Node Branch Etc.

Page 5: JTree javax.swing.tree javax.swing.event. Components JTree and JTable COMPONENT – Model – Selection Model – Editor – Renderer

JTree

The JTree class displays hierarchical data.

It displays the data vertically.

Each row has one item, called a “node.”

Page 6: JTree javax.swing.tree javax.swing.event. Components JTree and JTable COMPONENT – Model – Selection Model – Editor – Renderer

DefaultTreeModel

Is a simple implementation of Tree Model that uses TreeNodes objects to hold items in the tree.

Page 7: JTree javax.swing.tree javax.swing.event. Components JTree and JTable COMPONENT – Model – Selection Model – Editor – Renderer

TreeModel– DefaultTreeModel

TreeNode– DefaultMutableTreeNode

Page 8: JTree javax.swing.tree javax.swing.event. Components JTree and JTable COMPONENT – Model – Selection Model – Editor – Renderer

TreeModel methods

getChild(Object parent, int index) getChildCount (Object parent) getIndexOfChild(Object parent, Object child) getRoot() isLeaf(Object node)

Page 9: JTree javax.swing.tree javax.swing.event. Components JTree and JTable COMPONENT – Model – Selection Model – Editor – Renderer

DefaultMutableTreeNode

There is a rich set of methods in the DefaultMutableTreeNode class for viewing and manipulating nodes in a tree.

Page 10: JTree javax.swing.tree javax.swing.event. Components JTree and JTable COMPONENT – Model – Selection Model – Editor – Renderer

DefaultMutableTreeNode methods Tree enumeration

preorderEnumeration()– Conducts a preorder traversal rooted at this node

and returns an enumeration of TreeNode objects

postorderEnumeration()– Conducts a postorder traversal rooted at this node

and returns and enumeration of TreeNode objects

Page 11: JTree javax.swing.tree javax.swing.event. Components JTree and JTable COMPONENT – Model – Selection Model – Editor – Renderer

JTree sample code

DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root");

DefaultMutableTreeNode subroot = new DefaultMutableTreeNode("Subroot");

DefaultMutableTreeNode leaf1 = new DefaultMutableTreeNode("Leaf 1");

DefaultMutableTreeNode leaf2 = new

DefaultMutableTreeNode("Leaf 2");

Page 12: JTree javax.swing.tree javax.swing.event. Components JTree and JTable COMPONENT – Model – Selection Model – Editor – Renderer

Quick JTree code

treeModel = new DefaultTreeModel(root); tree = new JTree(treeModel); treeModel.insertNodeInto(subroot, root, 0); treeModel.insertNodeInto(leaf1, subroot, 0); treeModel.insertNodeInto(leaf2, root, 1);

Page 13: JTree javax.swing.tree javax.swing.event. Components JTree and JTable COMPONENT – Model – Selection Model – Editor – Renderer

Customizing a Tree's Display

Java, Windows, and Motif Look & Feel implementations

Page 14: JTree javax.swing.tree javax.swing.event. Components JTree and JTable COMPONENT – Model – Selection Model – Editor – Renderer

Add icons to tree nodes

Page 15: JTree javax.swing.tree javax.swing.event. Components JTree and JTable COMPONENT – Model – Selection Model – Editor – Renderer

Dynamically Changing a Tree

tree = new JTree(treeModel); tree.setEditable(true); treeModel.addTreeModelListener(new

MyTreeModelListener()); ... class MyTreeModelListener implements TreeModelListener

{ public void treeNodesChanged(TreeModelEvent e) { DefaultMutableTreeNode node; node = (DefaultMutableTreeNode)

(e.getTreePath().getLastPathComponent());

Page 16: JTree javax.swing.tree javax.swing.event. Components JTree and JTable COMPONENT – Model – Selection Model – Editor – Renderer

Homework

Compile and run the following java programs:– TestTree.java– SampleTreeTest.java

Links to the code will be found off the class website or

http://my.fit.edu/~ghrezo/TestTree.java.htm

http://my.fit.edu/~ghrezo/SampleTreeTest.java.htm

Page 17: JTree javax.swing.tree javax.swing.event. Components JTree and JTable COMPONENT – Model – Selection Model – Editor – Renderer

Tree node selection(tree listeners)

tree.getSelectionModel().setSelectionMode (TreeSelectionModel.SINGLE_TREE_SELECTION);

//Listen for when the selection changes. tree.addTreeSelectionListener(new TreeSelectionListener() {

public void valueChanged(TreeSelectionEvent e) { DefaultMutableTreeNode node = (DefaultMutableTreeNode)tree.getLastSelectedPathComponent();