📄 right7_2_3_20.htm
字号:
<html><head><title>JAVA编程语言</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><link rel="stylesheet" href="../../../css/text.css" type="text/css"></head><body bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" ><table width="100%" border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF"> <tr> <td valign="top"> <table width="98%" border="0" cellspacing="0" cellpadding="0" align="center" bgcolor="#FFFFFF"> <tr> <td height="244" valign="top"> <p> <span class="pt9-black"> 如果要显示一个层次关系分明的一组数据,用树状图表示能给用户一个直观而易用的感觉,JTree类如同Windows的资源管理器的左半部,通过点击可以"打开"、"关闭"文件夹,展开树状结构的图表数据。JTree也是依据M-V-C的思想来设计的,Jtree的主要功能是把数据按照树状进行显示,其数据来源于其它对象,其显示效果通常如下图所示:<br> <br> <img src="../../../images/tu/ch07/7_2_3_20.gif" width="356" height="182"> <br> <br> 下面是一棵包含六个分枝点的树的例子,来演示JTree的实现过程。</span></p> <p class="pt9-black"> import java.awt.*;<br> import java.awt.event.*;<br> import javax.swing.*;<br> import javax.swing.tree.*;<br> class Branch{<br> DefaultMutableTreeNode r; <br> <font color="339900">//DefaultMutableTreeNode是树的数据结构中的通用节点,节点也可以有多个子节点。</font><br> public Branch(String[] data){<br> r=new DefaultMutableTreeNode(data[0]);<br> for(int i=1;i<data.length;i++)<br> r.add(new DefaultMutableTreeNode(data[i])); <font color="339900"><br> //给节点r添加多个子节点</font><br> }<br> public DefaultMutableTreeNode node(){<font color="339900">//返回节点</font><br> return r;<br> }<br> }<br> public class Trees extends JPanel{<br> String [][]data={<br> {"Colors","Red","Blue","Green"},<br> {"Flavors","Tart","Sweet","Bland"},<br> {"Length","Short","Medium","Long"},<br> {"Volume","High","Medium","Low"},<br> {"Temperature","High","Medium","Low"},<br> {"Intensity","High","Medium","Low"}<br> };<br> static int i=0; <font color="339900">//I用于统计按钮点击的次数</font><br> DefaultMutableTreeNode root,child,chosen;<br> JTree tree;<br> DefaultTreeModel model;<br> public Trees(){<br> setLayout(new BorderLayout());<br> root=new DefaultMutableTreeNode("root"); <font color="339900"><br> //根节点进行初始化</font><br> tree=new JTree(root); <font color="339900"><br> //树进行初始化,其数据来源是root对象</font><br> add(new JScrollPane(tree));<font color="339900"><br> //把滚动面板添加到Trees中</font><br> model=(DefaultTreeModel)tree.getModel();<br> <font color="339900">//获得数据对象DefaultTreeModel</font><br> JButton test=new JButton("Press me");<br> <font color="339900">//按钮test进行初始化</font><br> test.addActionListener(new ActionListener(){<font color="339900"><br> //按钮test注册监听器</font><br> public void actionPerformed(ActionEvent e){<br> if (i<data.length){ <font color="339900"><br> //按钮test点击的次数小于data的长度</font><br> child=new Branch(data[i++]).node();<font color="339900"><br> //生成子节点</font><br> chosen=(DefaultMutableTreeNode) <font color="339900"><br> //选择child的父节点</font><br> tree.getLastSelectedPathComponent();<br> if(chosen==null) chosen=root;<br> model.insertNodeInto(child,chosen,0); <br> <font color="339900">//把child添加到chosen</font><br> }<br> }<br> });<br> test.setBackground(Color.blue); <font color="339900"><br> //按钮test设置背景色为蓝色</font><br> test.setForeground(Color.white); <font color="339900"><br> //按钮test设置前景色为白色</font><br> JPanel p=new JPanel(); <font color="339900"><br> //面板p初始化</font><br> p.add(test); <font color="339900"><br> //把按钮添加到面板p中</font><br> add(p,BorderLayout.SOUTH); <font color="339900"><br> //把面板p添加到Trees中</font><br> }<br> public static void main(String args[]){<br> JFrame jf=new JFrame("JTree demo");</p> <p class="pt9-black"> jf.getContentPane().add(new Trees(), BorderLayout.CENTER); <br> <font color="339900">//把Trees对象添加到JFrame对象的中央</font><br> jf.setSize(200,500);<br> jf.setVisible(true);<br> }<br> }</p> <p><span class="pt9-black"> 运行结果是多种多样的,与用户点击按钮的次序有关,其中一种结果如下</span><br> <img src="../../../images/tu/ch07/7_2_3_20_1.gif" width="194" height="563"><br> </p> <p><span class="pt9-black"> </span></p> </td> </tr> </table> </td> </tr></table></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -