当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:16:00  来源:本站整理

<b>java树型构造</b>[Java编程]

赞助商链接



  本文“<b>java树型构造</b>[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
利用一个JTree可以简单地像下面这样表示:
add(new JTree(
new Object[] {"this", "that", "other"}));
这个程序显示了一个原始的树状物.树状物的API是非常宏大的,但是——当然是在Swing中的宏大.它表明我们可以做有关树状物的任何事,但更复杂的任务大概需求不少的研究和试验.幸运的是,在库中供应了一个让步:“默许的”树状物组件,普通那是我们所需求的.因此大大都的时间我们可以操纵这些组件,并且只在特别的情形下我们需求更深化的研究和理解.
下面的例子利用了“默许”的树状物组件在一个程序片中显示一个树状物.当我们按下按钮时,一个新的子树就被增添到当前选中的结点下(假如没有结点被选中,就用根结节):
//: Trees.java
// Simple Swing tree example. Trees can be made
// vastly more complex than this.
package c13.swing;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.tree.*;

// Takes an array of Strings and makes the first
// element a node and the rest leaves:
class Branch {
  DefaultMutableTreeNode r;
  public Branch(String[] data) {
    r = new DefaultMutableTreeNode(data[0]);
    for(int i = 1; i < data.length; i++)
      r.add(new DefaultMutableTreeNode(data[i]));
  }
  public DefaultMutableTreeNode node() { 
    return r; 
  }
}  

public class Trees extends JPanel {
  String[][] data = {
    { "Colors", "Red", "Blue", "Green" },
    { "Flavors", "Tart", "Sweet", "Bland" },
    { "Length", "Short", "Medium", "Long" },
    { "Volume", "High", "Medium", "Low" },
    { "Temperature", "High", "Medium", "Low" },
    { "Intensity", "High", "Medium", "Low" },
  };
  static int i = 0;
  DefaultMutableTreeNode root, child, chosen;
  JTree tree;
  DefaultTreeModel model;
  public Trees() {
    setLayout(new BorderLayout());
    root = new DefaultMutableTreeNode("root");
    tree = new JTree(root);
    // Add it and make it take care of scrolling:
    add(new JScrollPane(tree), 
      BorderLayout.CENTER);
    // Capture the tree's model:
    model =(DefaultTreeModel)tree.getModel();
    JButton test = new JButton("Press me");
    test.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e){
        if(i < data.length) {
          child = new Branch(data[i++]).node();
          // What's the last one you clicked?
          chosen = (DefaultMutableTreeNode)
            tree.getLastSelectedPathComponent();
          if(chosen == null) chosen = root;
          // The model will create the 
          // appropriate event. In response, the
          // tree will update itself:
          model.insertNodeInto(child, chosen, 0);
          // This puts the new node on the 
          // currently chosen node.
        }
      }
    });
    // Change the button's colors:
    test.setBackground(Color.blue);
    test.setForeground(Color.white);
    JPanel p = new JPanel();
    p.add(test);
    add(p, BorderLayout.SOUTH);
  }
  public static void main(String args[]) {
    Show.inFrame(new Trees(),200,500);
  }
} ///:~
最重要的类就是分支,它是一个工具,用来获得一个字符串数组并为第一个字符串成立一个DefaultMutableTreeNode作为根,别的在数组中的字符串作为叶.然后node()办法被调用以产生“分支”的根.树状物类包含一个来自被制造的分支的二维字符串数组,以及用来统计数组的一个静态中止i.DefaultMutableTreeNode对象掌握这个结节,但在屏幕上表示的是被JTree和它的相关(DefaultTreeModel)情势所掌握.注意当JTree被增添到程序片时,它被封装到JScrollPane中——这就是它全部供应的自动转动.
JTree通过它自己的模子来掌握.当我们改正这个模子时,模子产生一个事件,招致JTree对可以瞥见的树状物完成任何必要的进级.在init()中,模子由调用getModel()办法所捕捉.当按钮被按下时,一个新的分支被成立了.然后,当前挑选的组件被找到(假如没有挑选就是根)并且模子的insertNodeInto()办法做全部的改变树状物和招致它进级的工作.
大大都的时刻,就像上面的例子一样,程序将给我们在树状物中所需求的一切.不过,树状物拥有力气去做我们可以想像到的任何事——在上面的例子中我们处处都可看到“default(默许)”字样,我们可以代替我们自己的类来获得差别的行动.但请注意:几近全部这些类都有一个具大的接口,因此我们可以花一些时间勤奋去理解这些扑朔迷离的树状物.
  以上是“<b>java树型构造</b>[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .