trees.java~33~

来自「Contains a complete archiver by Haruhiko」· JAVA~33~ 代码 · 共 75 行

JAVA~33~
75
字号
package swingexample;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.tree.*;

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 = {
      {"体育", "足球", "篮球", "乒乓球"},
      {"娱乐", "唱歌", "跳舞", "相声" , "小品"},
      {"电视", "长虹", "海尔", "创维"},
      {"戏剧", "京剧", "川剧", "越剧"},
      {"国家", "中国", "越南", "朝鲜" },
      {"武器", "飞机", "大炮", "坦克"},
  };

  static int i = 0;
  DefaultMutableTreeNode root;
  DefaultMutableTreeNode child;
  DefaultMutableTreeNode chosen;
  JTree tree;
  DefaultTreeModel model;
  public Trees() {
    setLayout(new BorderLayout());
    root = new DefaultMutableTreeNode("根");
    tree = new JTree(root);

    add(new JScrollPane(tree), BorderLayout.CENTER);

    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();

          chosen = (DefaultMutableTreeNode)tree.getLastSelectedPathComponent();
          if (chosen == null){
            chosen = root;
          }

          model.insertNodeInto(child, chosen, 0);
        }
      }
    });

    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[]) {
    JFrame f = new JFrame();
    f.getContentPane().add(new Trees());
    f.setSize(200,150);
    f.setTitle("树的示例");
    f.show();
  }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?