Swing_Jtree:实例

 package treeTest;

//13225678980
import java.awt.*;

import javax.swing.*;
import javax.swing.tree.*;
import javax.swing.event.*;
import java.awt.Rectangle;
import java.awt.event.*;
import java.io.File;

public class treeTest extends JFrame {
    DefaultMutableTreeNode modelTree;
    JScrollPane jScrollPane1 = new JScrollPane();
    JTree tree_t;
    JLabel jLabel1 = new JLabel();
    JLabel jLabel2 = new JLabel();
    JLabel lbl_parents = new JLabel();
    JButton btn_add = new JButton();
    JButton btn_delete = new JButton();
    JButton btn_clear = new JButton();
    DefaultTreeCellEditor tce;
    ImageIcon secondkinds = new ImageIcon(treeTest.class.getResource(
            "bullet.gif"));
    JTextField jtext_ower = new JTextField();
    public treeTest() {
        try {
            jbInit();
        } catch (Exception exception) {
            exception.printStackTrace();
        }
    }

    private void inintree(DefaultMutableTreeNode model, File file) {
        DefaultMutableTreeNode tmep = new DefaultMutableTreeNode(file.getName());
        model.add(tmep);
        if (file.isDirectory()) {
            File[] tempfile = file.listFiles();
            if (tempfile.length != 0) {
                for (int i = 0; i < tempfile.length; i++) {
                    inintree(tmep, tempfile[i]);
                }
            }
        }
    }

    private void jbInit() throws Exception {
        File[] file = File.listRoots();
        modelTree = new DefaultMutableTreeNode(file[2].getPath());
        File[] file1 = file[2].listFiles();
        for (int i = 0; i < file1.length; i++) {
            inintree(modelTree, file1[i]);
        }
        tree_t = new JTree(modelTree);
        DefaultTreeCellRenderer render = new DefaultTreeCellRenderer();
        render.setLeafIcon(secondkinds);
        render.setFont(new Font("宋体", 0, 10));
        tree_t.setCellRenderer(render);
        tree_t.setOpaque(true);
        getContentPane().setLayout(null);
        jScrollPane1.setBounds(new Rectangle(10, 15, 141, 227));
        lbl_parents.setFont(new java.awt.Font("宋体", Font.BOLD, 16));
        btn_add.setBounds(new Rectangle(175, 180, 61, 25));
        btn_add.setText("增加");
        btn_delete.setBounds(new Rectangle(247, 179, 63, 26));
        btn_delete.setText("删除");
        btn_clear.setBounds(new Rectangle(322, 180, 60, 25));
        btn_clear.setToolTipText("");
        btn_clear.setText("清空");
        this.getContentPane().setBackground(SystemColor.control);
        jtext_ower.setBounds(new Rectangle(238, 95, 96, 27));
        jtext_ower.addKeyListener(new KeyAdapter() {
            public void keyPressed(KeyEvent e) {
                jtext_ower_keyPressed(e);
            }
        });

        this.getContentPane().add(jScrollPane1);
        jScrollPane1.getViewport().add(tree_t);
        lbl_parents.setBounds(new Rectangle(239, 25, 124, 26));
        jLabel2.setFont(new java.awt.Font("宋体", Font.BOLD, 16));
        jLabel2.setToolTipText("");
        jLabel2.setText("本目录");
        jLabel2.setBounds(new Rectangle(174, 95, 58, 20));
        this.getContentPane().add(jLabel1);
        this.getContentPane().add(lbl_parents);
        this.getContentPane().add(jLabel2);
        this.getContentPane().add(btn_add);
        this.getContentPane().add(btn_delete);
        this.getContentPane().add(btn_clear);
        this.getContentPane().add(jtext_ower);
        jLabel1.setFont(new java.awt.Font("宋体", Font.BOLD, 16));
        jLabel1.setToolTipText("");
        jLabel1.setText("父目录");
        jLabel1.setBounds(new Rectangle(174, 24, 59, 27));
        Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
        this.setSize(400, 300);
        this.setLocation((screen.width - 300) / 2, (screen.height - 300) / 2);
        this.setVisible(true);
       /* tree_t.setEditable(true);
        tce = (DefaultTreeCellEditor) tree_t.getCellEditor();*/
        tree_t.addTreeSelectionListener(new TreeSelectionListener() {
            public void valueChanged(TreeSelectionEvent e) {
                TreePath tp = tree_t.getSelectionPath();
                DefaultMutableTreeNode dmtn = (DefaultMutableTreeNode) tp.
                                              getLastPathComponent();
                if (dmtn.isRoot()) {
                    lbl_parents.setText("");
                    jtext_ower.setText(dmtn.toString());
                } else {
                    DefaultMutableTreeNode topdmtn = (DefaultMutableTreeNode)
                            tp.getParentPath().getLastPathComponent();
                    lbl_parents.setText(topdmtn.toString());
                    jtext_ower.setText(dmtn.toString());
                }
            }
        });
        btn_add.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                addNode();
            }
        });
        btn_delete.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                delete();
            }
        });
        btn_clear.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                modelTree.removeAllChildren();
                tree_t.updateUI();
            }
        });
    }

    private void delete() {
        TreePath treepath = tree_t.getSelectionPath();
        DefaultMutableTreeNode dmtn = (DefaultMutableTreeNode) treepath.
                                      getLastPathComponent();
        if (dmtn.isRoot()) {
            JOptionPane.showMessageDialog(this, "根目录不能删除");
        } else if (dmtn.getChildCount() != 0) {
            JOptionPane.showMessageDialog(this, "文件架非空,不能删除");
        } else {
            DefaultMutableTreeNode top = (DefaultMutableTreeNode) tree_t.
                                         getSelectionPath().getParentPath().
                                         getLastPathComponent();
            top.remove(dmtn);
            tree_t.updateUI();
        }
    }

    private void addNode() {
        String TreeNodeName = null;
        if (!((TreeNodeName = JOptionPane.showInputDialog(this, "请输入接点名称", "",
                JOptionPane.YES_OPTION)) == null)) {
            if (TreeNodeName.trim().length() != 0) {
                DefaultMutableTreeNode dmtn = new DefaultMutableTreeNode(
                        TreeNodeName);
                if (tree_t.getSelectionCount() != 0) {
                    tree_t.setEditable(true);
                    TreePath treepath = tree_t.getSelectionPath();
                    DefaultMutableTreeNode topModelNode = (
                            DefaultMutableTreeNode) treepath.
                            getLastPathComponent();
                    topModelNode.insert(dmtn, topModelNode.getChildCount());
                    tree_t.updateUI();
                }
            }
        }
    }

    public static void main(String[] args) {
        treeTest treetest = new treeTest();
    }

    public void jtext_ower_keyPressed(KeyEvent e) {
        TreePath tp = tree_t.getSelectionPath();
        DefaultMutableTreeNode dmtn = (DefaultMutableTreeNode) tp.
                                      getLastPathComponent();
        dmtn.setUserObject(jtext_ower.getText());
        tree_t.updateUI();

    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值