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;
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值