java gui 层次结构_JAVA GUI学习 - JTree树结构组件学习 ***

这个类大家都很熟悉了,现在来看这个类的源代码。 public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, java.io.Serializable 这个类继承自AbstractList类,实现了List接口,RandomAccess接口,Cloneable接口和

1 public class JTreeKnow extends JFrame

2 {

3

public JTreeKnow()

4

{

5

this.setBounds(300, 100, 400, 500);

6

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

7

8

//创建树的第一种方式

9

JTree jTree = new JTree(); 10

this.add(jTree); 11

12

//创建树的第二种方式:推荐 13

//创建根节点 14

DefaultMutableTreeNode defaultMutableTreeNode = new DefaultMutableTreeNode("根节点"); 15

//创建树模型 16

DefaultTreeModel defaultTreeModel = new DefaultTreeModel(defaultMutableTreeNode); 17

//创建树 18

JTree jTree2 = new JTree(defaultTreeModel); 19

//创建滚动面板 20

JScrollPane jScrollPane = new JScrollPane(jTree2); 21

this.add(jScrollPane); 22

//添加子节点 23

for(int i = 1; i < 3; i++) 24

{ 25

DefaultMutableTreeNode defaultMutableTreeNode2 = new DefaultMutableTreeNode("第一阶子节点"+i); 26

for(int j = 1; j < 4; j++) 27

{ 28

DefaultMutableTreeNode defaultMutableTreeNode3 = new DefaultMutableTreeNode("第二阶子节点"+i+j); 29

defaultMutableTreeNode2.add(defaultMutableTreeNode3); 30

} 31

defaultMutableTreeNode.add(defaultMutableTreeNode2); 32

} 33

34

//获取根节点 35

DefaultMutableTreeNode defaultMutableTreeNode2 = (DefaultMutableTreeNode) defaultTreeModel.getRoot(); 36

//根据父节点索引+子节点索引找到节点 37

DefaultMutableTreeNode defaultMutableTreeNode3 = (DefaultMutableTreeNode) defaultTreeModel.getChild(defaultMutableTreeNode2, 0); 38

System.out.println(defaultMutableTreeNode3); 39

//获取某一节点到顶级节点(根节点)之间所有的节点 40

41

//获取某节点所对应的阶层 42

int level = defaultMutableTreeNode3.getLevel(); 43

44

//刷新重新绘制节点数(重要) 45

defaultTreeModel.reload(); 46

//获取所有节点:迭代器 47

Enumeration nodes = defaultMutableTreeNode.children(); 48

//判断某节点是否是根节点、页节点isLeaf() 49

((DefaultMutableTreeNode)defaultMutableTreeNode.getChildAt(0)).isRoot(); 50

51

/*******************************************监听器****************************************/ 52

// 53

/***************JTree的监听器**************/ 54

//绑定选项监听器 55

//某节点被选中了 56

jTree2.addTreeSelectionListener(new TreeSelectionListener() 57

{ 58

@Override 59

public void valueChanged(TreeSelectionEvent e) 60

{ 61

// TODO Auto-generated method stub 62 //

System.out.println("节点被选择"); 63

//获取选中的treePath,treePath即根节点至所选节点的集合 64 //

System.out.println(tree.getSelectionPath()); 65 //

//获取节点集合的数量 66 //

System.out.println(tree.getSelectionPath().getPathCount()); 67 //

//获取选中的节点对象 68 //

System.out.println((DefaultMutableTreeNode)tree.getSelectionPath().getLastPathComponent()); 69

70

System.out.println(e.getPath().getLastPathComponent()); 71

} 72

}); 73

//为降低程序的错误率,监听器addTreeWillExpandListener和监听器addTreeExpansionListener通常会同时搭配使用, 74

//以确保程序菜单正常、正确打开 75

//绑定数结展开折叠的监听器 76

//节点被展开了 77

jTree2.addTreeExpansionListener(new TreeExpansionListener() 78

{ 79

/** 80

* 展开事件 81

*/ 82

@Override 83

public void treeExpanded(TreeExpansionEvent event) 84

{ 85

// TODO Auto-generated method stub 86

System.out.println(event.getPath().getLastPathComponent()+" 被展开"); 87

} 88

/** 89

* 折叠 90

*/ 91

@Override 92

public void treeCollapsed(TreeExpansionEvent event) 93

{ 94

// TODO Auto-generated method stub 95

System.out.println(event.getPath().getLastPathComponent()+" 被折叠"); 96

} 97

}); 98

99

//绑定树结构将要执行展开和折叠的监听器100

//节点将被展开:通常使用本方法对节点进行动态的显示控制101

jTree2.addTreeWillExpandListener(new TreeWillExpandListener()102

{103

/**104

* 将被展开的事件105

*/106

@Override107

public void treeWillExpand(TreeExpansionEvent event)108

throws ExpandVetoException109

{110

// TODO Auto-generated method stub111

System.out.println(event.getPath().getLastPathComponent()+" 将被展开");112

113

}114

/**115

* 将被折叠的事件116

*/117

@Override118

public void treeWillCollapse(TreeExpansionEvent event)119

throws ExpandVetoException120

{121

// TODO Auto-generated method stub122

System.out.println(event.getPath().getLastPathComponent()+" 将被折叠");123

}124

});125

}126

public static void main(String[] args)127

{128

JTreeKnow jTreeKnow = new JTreeKnow();129

jTreeKnow.setVisible(true);130

}131 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值