jtree 节点编辑事件

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

public class SimpleTree extends JFrame{
    static int i = 0;
    DefaultMutableTreeNode root;
    /* DefaultMutableTreeNode是树数据结构中的通用节点 */
    DefaultMutableTreeNode child;
    DefaultMutableTreeNode chosen;
    JTree tree;
    DefaultTreeModel model; // 使用 TreeNodes 的简单树数据模型.
    String[][] data =
            {{"体育","足球","篮球","乒乓球"},{"娱乐","唱歌","跳舞","相声","小品"},{"电视","长虹","海尔","创维"},{"戏剧","京剧","川剧","越剧"},
                    {"国家","中国","越南","朝鲜","德国"},{"武器","飞机","大炮","坦克"}};
    SimpleTree(){
        Container contentPane = this.getContentPane();
        JPanel jPanel1 = new JPanel(new BorderLayout());
        root = new DefaultMutableTreeNode("根");
        tree = new JTree(root); // 建立以root为根的树
        jPanel1.add(new JScrollPane(tree),BorderLayout.CENTER);
        model = (DefaultTreeModel) tree.getModel();       
        for(int i = 0 ;i < data.length ; i++){
            child = new Branch(data[i++]).node();
            chosen = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();
            if(chosen == null){
                chosen = root;
            }
            model.insertNodeInto(child,chosen,0);
        }
        JButton jButton1 = new JButton("使节点可编辑");

        //选中节点
//        jButton1.addActionListener(new ActionListener() {
//            public void actionPerformed(ActionEvent e){
//                tree.setEditable(true);
//                tree.getCellEditor().addCellEditorListener(new CellEditorAction());
//            }
//        });

        //使节点可编辑
        jButton1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e){
                tree.setEditable(true);
                tree.getCellEditor().addCellEditorListener(new CellEditorAction());
                tree.startEditingAtPath(tree.getSelectionPath());
            }
        });

       
        jButton1.setBackground(Color.blue);
        jButton1.setForeground(Color.white);
        JPanel jPanel2 = new JPanel();
        jPanel2.add(jButton1);
        jPanel1.add(jPanel2,BorderLayout.SOUTH);
        contentPane.add(jPanel1);
        this.setTitle("JtreeDemo");
        this.setSize(300,500);
        this.setLocation(400,400);
        this.setVisible(true);
    }
    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;
        }
    }
    private class CellEditorAction implements CellEditorListener{
        public void editingCanceled(ChangeEvent e) {
            System.out.println("==========编辑取消");
        }
        public void editingStopped(ChangeEvent e) {
            System.out.println("=======编辑结束");
        }
    }
    public static void main(String args[]){
        SimpleTree test = new SimpleTree();
    }
}

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值