java中的树组件

JTree类的对象称为树组件,是常用组件之一。
DefaultMutableTreeNode节点
要想构建一个树组件,必须先为其创建结点对象。任何实现DefaultMutableTreeNode接口的类创建的对象都可以成为树上的结点。

public class Example9_21 {
    public static void main(String[] args) {
        TreeWin win = new TreeWin();
    }
}
import javax.swing.*;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import java.awt.*;

public class TreeWin extends JFrame implements TreeSelectionListener {
    JTree tree;
    JTextArea showText;

    TreeWin() {
        DefaultMutableTreeNode root = new DefaultMutableTreeNode("商品");//根节点
        DefaultMutableTreeNode nodeTV = new DefaultMutableTreeNode("电视机类");//节点
        DefaultMutableTreeNode nodePhone = new DefaultMutableTreeNode("手机类");//节点
        DefaultMutableTreeNode tv1 = new DefaultMutableTreeNode(new Goods("长虹电视", 5699));
        DefaultMutableTreeNode tv2 = new DefaultMutableTreeNode(new Goods("海尔电视", 7832));
        DefaultMutableTreeNode phone1 = new DefaultMutableTreeNode(new Goods("诺基亚手机", 3600));
        DefaultMutableTreeNode phone2 = new DefaultMutableTreeNode(new Goods("三星手机", 2155));
        root.add(nodeTV);
        root.add(nodePhone);
        nodeTV.add(tv1);
        nodeTV.add(tv2);
        nodePhone.add(phone1);
        nodePhone.add(phone2);
        tree = new JTree(root);  //用root做根的数组件
        tree.addTreeSelectionListener(this); //窗口监视树组件上的事件
        showText = new JTextArea();
        setLayout(new GridLayout(1,2));
        add(new JScrollPane(tree));
        add(new JScrollPane(showText));
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
        setBounds(80, 80, 300, 300);
        validate();
    }

    @Override
    public void valueChanged(TreeSelectionEvent e) {
        DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();
        if (node.isLeaf()) {
            Goods s = (Goods) node.getUserObject(); //得到节点中存放的对象
            showText.append(s.name + "," + s.price + "元\n");
        } else {
            showText.setText(null);

        }
    }
}

public class Goods {
    String name;
    double price;

    public Goods(String n, double p) {
        name = n;
        price = p;
    }

    public String toString() {   //返回对象的串表示
        return name;
    }
}

发布了73 篇原创文章 · 获赞 81 · 访问量 9991

猜你喜欢

转载自blog.csdn.net/qq_41910353/article/details/102314770