JTree的使用
来源:互联网 发布:php遍历二维数组 编辑:程序博客网 时间:2024/05/18 03:28
1.1 JTree深入浅出
1.1.1 用HashTable构造JTree树
package com.jtree;
/**
*
* <p>Title: HelloWorld之JAVA基础</p>
*
* <p>Description: JAVA基础</p>
*
* <p>Copyright: Copyright (c) 2007</p>
*
* <p>Company: HelloWorld of QYSOFT</p>
*
* @author 商延涛
* @version 1.0
*/
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.text.*;
import java.beans.*;
import java.awt.BorderLayout;
import java.awt.Rectangle;
/*
使用JTree组件:
java.lang.Object
--java.awt.Component
--java.awt.Container
--javax.swing.JComponent
--javax.swing.JTree
JTree构造函数:
JTree():建立一棵系统默认的树。
JTree(Hashtable value):利用Hashtable建立树,不显示root node(根节点).
JTree(Object[] value):利用Object Array建立树,不显示root node.
JTree(TreeModel newModel):利用TreeModel建立树。
JTree(TreeNode root):利用TreeNode建立树。
JTree(TreeNode root,boolean asksAllowsChildren):利用TreeNode建立树,并决定是否允许子节点的存在.
JTree(Vector value):利用Vector建立树,不显示root node.
*/
public class SimpleTree extends JFrame {
public SimpleTree() {
this.setSize(500, 300);
this.setLocation(150, 150);
try {
jbInit();
} catch (Exception ex) {
ex.printStackTrace();
}
}
public static void main(String[] args) {
SimpleTree tree = new SimpleTree();
tree.setVisible(true);
tree.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void jbInit() throws Exception {
String[] s1 = {"公司文件", "个人信件", "私人文件"};
String[] s2 = {"本机磁盘(C:)", "本机磁盘(D:)", "本机磁盘(E:)"};
String[] s3 = {"奇摩站", "职棒消息", "网络书店"};
Hashtable hashtable1 = new Hashtable();
Hashtable hashtable2 = new Hashtable();
hashtable1.put("我的公文包", s1);
hashtable1.put("我的电脑", s2);
hashtable1.put("收藏夹", hashtable2);
hashtable2.put("网站列表", s3);
this.setTitle("测试树");
this.getContentPane().setLayout(borderLayout1);
this.getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);
jPanel1.add(jSplitPane1);
jSplitPane1.add(jScrollPane1, JSplitPane.LEFT);
jTree1 = new JTree(hashtable1);
jScrollPane1.getViewport().add(jTree1);
jSplitPane1.setBounds(new Rectangle(36, 30, 339, 246));
jPanel1.setLayout(null);
}
BorderLayout borderLayout1 = new BorderLayout();
JPanel jPanel1 = new JPanel();
JSplitPane jSplitPane1 = new JSplitPane();
JScrollPane jScrollPane1 = new JScrollPane();
JTree jTree1;
}
1.1.2 用TreeTable构造JTree树
除了以节点的观念(TreeNode)建立树之外,你可以用data model的模式建立树。树的data model称为TreeModel,用此模式的好处
是可以触发相关的树事件,来处理树可能产生的一些变动。TreeModel是一个interface,里面定义了8种方法;如果你是一个喜欢自己
动手做的人,或是你想显示的数据格式很复杂,你可以考虑直接实作TreeModel界面中所定义的方法来构造出JTree.TreeModel界面
的方法如下所示:
TreeModel方法:
void addTreeModelListener(TreeModelListener l):增加一个TreeModelListener来监控TreeModelEvent事件。
Object getChild(Object parent,int index):返回子节点。
int getChildCount(Object parent):返回子节点数量.
int getIndexOfChild(Object parent,Object child):返回子节点的索引值。
Object getRoot():返回根节点。
boolean isLeaf(Object node):判断是否为树叶节点。
void removeTreeModelListener(TreeModelListener l):删除TreeModelListener。
void valueForPathChanged(TreePath path,Object newValue):当用户改变Tree上的值时如何应对。
你可以实作出这8种方法,然后构造出自己想要的JTree,不过在大部份的情况下我们通常不会这样做,毕竟要实作出这8种方法不
是件很轻松的事,而且java本身也提供了一个默认模式,叫做DefaultTreeModel,这个类已经实作了TreeModel界面,也另外提供许
多实用的方法。利用这个默认模式,我们便能很方便的构造出JTree出来了。下面为DefaultTreeModel的构造函数与范例:
DefaultTreeModel构造函数:
DefaultTreeModel(TreeNode root):建立DefaultTreeModel对象,并定出根节点。
DefaultTreeModel(TreeNode root,Boolean asksAllowsChildren):建立具有根节点的DefaultTreeModel对象,并决定此节点是否允
许具有子节点。
1.1.3 用DefaultTreeModel 构造树
package com.jtree;
import javax.swing.*;
import java.awt.BorderLayout;
import java.awt.Rectangle;
import java.util.Hashtable;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
public class DefaultModelDemo extends JFrame {
public DefaultModelDemo() {
this.setSize(500, 300);
this.setLocation(150, 150);
try {
jbInit();
} catch (Exception ex) {
ex.printStackTrace();
}
}
public static void main(String[] args) {
DefaultModelDemo tree = new DefaultModelDemo();
tree.setVisible(true);
tree.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void jbInit() throws Exception {
this.setTitle("测试默认模型树");
this.getContentPane().setLayout(borderLayout1);
this.getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);
jPanel1.add(jScrollPane1);
DefaultMutableTreeNode root = new DefaultMutableTreeNode("JAVA");
DefaultMutableTreeNode node1 = new DefaultMutableTreeNode("J2SE");
DefaultMutableTreeNode node2 = new DefaultMutableTreeNode("J2EE");
DefaultMutableTreeNode node3 = new DefaultMutableTreeNode("J2ME");
root.add(node1);
root.add(node2);
root.add(node3);
jTree1 = new JTree(root);
jScrollPane1.getViewport().add(jTree1);
jScrollPane1.setBounds(new Rectangle(42, 38, 208, 216));
jPanel1.setLayout(null);
}
JPanel jPanel1 = new JPanel();
BorderLayout borderLayout1 = new BorderLayout();
JScrollPane jScrollPane1 = new JScrollPane();
JTree jTree1;
}
- JTree控件的使用
- JTree控件的使用
- JTree的使用
- JTree控件的使用
- JTree 的使用
- JTree 的使用
- JAVA JTree的使用
- JAVA中JTree的使用
- JTree树控件的使用
- JTree的最简单使用:
- 使用JTree
- JTree树控件的使用(非常易懂)
- JScrollPane+JTree的使用+container 是JPanel
- swing中JTree的使用和JTree在netbeans中的用法
- swing中JTree的使用和JTree在netbeans中的用法
- JTree用法及JTree使用经验总结
- JTree用法及JTree使用经验总结(转)
- JTree用法及JTree使用经验总结(转)
- 不断向前,光明依旧遥远
- 最近的苦恼~~!
- ClearCase应用模型总结
- 数据库连接池之外观模式+单例模式的实现
- JTable的使用
- JTree的使用
- JTable深入浅出
- 打发时光的102个网站...很有意思的...
- LaTeX学习笔记
- 专业的LaTeX: 在Linux下编写高质量的文档
- javascript调用webservice
- 最短路径实现(Dijkstra算法)
- GNU
- ASP.net 2.0 引导参考