没有合适的资源?快使用搜索试试~ 我知道了~
首页java swing-jtree的用法
java swing-jtree的用法
5星 · 超过95%的资源 需积分: 50 48 下载量 49 浏览量
更新于2023-03-16
评论
收藏 188KB DOC 举报
JTree上的每一个节点就代表一个TreeNode对象,TreeNode本身是一个Interface,里面定义了7个有关节点的方法,例如判断是否 为树叶节点、有几个子节点(getChildCount())、父节点为何(getparent())等等、这些方法的定义你可以在javax.swing.tree的 package中找到,读者可自行查阅java api文件。在实际的应用上,一般我们不会直接实作此界面,而是采用java所提供的 DefaultMutableTreeMode类,此类是实作MutableTreeNode界面而来,并提供了其他许多实用的方法。MutableTreeNode本身也是一 个Interface,且继承了TreeNode界面此类主要是定义一些节点的处理方式,例如新增节点(insert())、删除节点(remove())、设置
资源详情
资源评论
资源推荐
++ 树(Tree)的使用与介绍
10-1:使用 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.
范例:
InitalTree.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class InitalTree{
public InitalTree(){
JFrame f=new JFrame("TreeDemo");
Container contentPane=f.getContentPane();
JTree tree=new JTree();
JScrollPane scrollPane=new JScrollPane();
scrollPane.setViewportView(tree);
contentPane.add(scrollPane);
f.pack();
f.setVisible(true);
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
public static void main(String[] args){
new InitalTree();
}
}
10-2:以 Hashtable 构造 JTree:
上面的例子对我们并没有裨的帮助,因为各个节点的数据均是 java 的默认值,而非我们
自己设置的。因此我们需利用其他 JTree
构造函数来输入我们想要的节点数据。以下范例我们以 Hashtable 当作 JTree 的数据输入:
范例:TreeDemo1.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class TreeDemo1{
public TreeDemo1(){
JFrame f=new JFrame("TreeDemo1");
Container contentPane=f.getContentPane();
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);
Font font = new Font("Dialog", Font.PLAIN, 12);
Enumeration keys = UIManager.getLookAndFeelDefaults().keys();
/**定义 widnows 界面**/
while (keys.hasMoreElements()) {
Object key = keys.nextElement();
if (UIManager.get(key) instanceof Font) {
UIManager.put(key, font);
}
}
try{
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
}catch(Exception el){
System.exit(0);
}
/**定义 widnows 界面**/
JTree tree=new JTree(hashtable1);
JScrollPane scrollPane=new JScrollPane();
scrollPane.setViewportView(tree);
contentPane.add(scrollPane);
f.pack();
f.setVisible(true);
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
public static void main(String[] args){
new TreeDemo1();
}
}
纯 XP 界面的设置:
10-3:以 TreeNode 构造 JTree:
JTree 上的每一个节点就代表一个 TreeNode 对象,TreeNode 本身是一个 Interface,里面定
义了 7 个有关节点的方法,例如判断是否
为树叶节点、有几个子节点(getChildCount())、父节点为何(getparent())等等、这些方法的定
义你可以在 javax.swing.tree 的
package 中找到,读者可自行查阅 java api 文件。在实际的应用上,一般我们不会直接实作
此界面,而是采用 java 所提供的
DefaultMutableTreeMode 类,此类是实作 MutableTreeNode 界面而来,并提供了其他许多实
用的方法。MutableTreeNode 本身也是一
个 Interface,且继承了 TreeNode 界面此类主要是定义一些节点的处理方式,例如新增节点
(insert())、删除节点(remove())、设置
节点(setUserObject())等。整个关系如下图:
TreeNode----extends--->MutableTreeNode---implements---DefaultMutableTreeNode
接 下 来 我 们 来 看 如 何 利 DefaultMutableTreeNode 来 建 立 JTree, 我 们 先 来 看
DefaultMutableTreeNode 的构造函数:
DefaultMutableTreeNode 构造函数:
DefaultMutableTreeNode():建立空的 DefaultMutableTreeNode 对象。
DefaultMutableTreeNode(Object userObject): 建 立 DefaultMutableTreeNode 对 象 , 节 点 为
userObject 对象。
DefaultMutableTreeNode(Object userObject,Boolean allowsChildren): 建 立
DefaultMutableTreeNode 对象,节点为 userObject 对
象并决定此节点是否允许具有子节点。
以下为利用 DefaultMutableTreeNode 建立 JTree 的范例:TreeDemo2.java
此程序"资源管理器"为此棵树的根节点.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.tree.*;
public class TreeDemo2{
public TreeDemo2(){
JFrame f=new JFrame("TreeDemo2");
Container contentPane=f.getContentPane();
DefaultMutableTreeNode root=new DefaultMutableTreeNode("资源管理器");
DefaultMutableTreeNode node1=new DefaultMutableTreeNode("我的公文包");
DefaultMutableTreeNode node2=new DefaultMutableTreeNode("我的电脑");
DefaultMutableTreeNode node3=new DefaultMutableTreeNode("收藏夹");
DefaultMutableTreeNode node4=new DefaultMutableTreeNode("Readme");
root.add(node1);
root.add(node2);
root.add(node3);
root.add(node4);
DefaultMutableTreeNode leafnode=new DefaultMutableTreeNode("公司文件");
node1.add(leafnode);
leafnode=new DefaultMutableTreeNode("私人文件");
node1.add(leafnode);
leafnode=new DefaultMutableTreeNode("个人信件");
leafnode=new DefaultMutableTreeNode("本机磁盘(C:)");
node2.add(leafnode);
leafnode=new DefaultMutableTreeNode("本机磁盘(D:)");
node2.add(leafnode);
leafnode=new DefaultMutableTreeNode("本机磁盘(E:)");
node2.add(leafnode);
DefaultMutableTreeNode node31=new DefaultMutableTreeNode("网站列表");
node3.add(node31);
leafnode=new DefaultMutableTreeNode("奇摩站");
node31.add(leafnode);
leafnode=new DefaultMutableTreeNode("职棒消息");
node31.add(leafnode);
leafnode=new DefaultMutableTreeNode("网络书店");
node31.add(leafnode);
JTree tree=new JTree(root);
JScrollPane scrollPane=new JScrollPane();
scrollPane.setViewportView(tree);
contentPane.add(scrollPane);
f.pack();
f.setVisible(true);
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
public static void main(String[] args){
new TreeDemo2();
}
}
10-4:以 TreeModel 构造 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 界面,也另外提供许
剩余23页未读,继续阅读
g551871904
- 粉丝: 1
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论8