Java如何从JTree删除节点?

下面的代码演示了如何从JTree组件中删除节点。

package org.nhooo.example.swing;

import javax.swing.*;

import javax.swing.tree.*;

import java.awt.*;

import java.awt.event.ActionListener;

import java.awt.event.ActionEvent;

public class JTreeRemoveNode extends JFrame {

    public JTreeRemoveNode() throws HeadlessException {

        initializeUI();

    }

    private void initializeUI() {

        setSize(400, 400);

        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        DefaultMutableTreeNode root = new DefaultMutableTreeNode("Address Book");

        String[] names = new String[] {"Alice", "Bob", "Carol", "Mallory"};

        for (String name : names) {

            DefaultMutableTreeNode node = new DefaultMutableTreeNode(name);

            root.add(node);

        }

        final JTree tree = new JTree(root);

        JScrollPane pane = new JScrollPane(tree);

        pane.setPreferredSize(new Dimension(400, 400));

        JButton removeButton = new JButton("Remove");

        removeButton.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {

                DefaultTreeModel model = (DefaultTreeModel) tree.getModel();

                TreePath[] paths = tree.getSelectionPaths();

                if (paths != null) {

                    for (TreePath path : paths) {

                        DefaultMutableTreeNode node = (DefaultMutableTreeNode) 

                            path.getLastPathComponent();

                        if (node.getParent() != null) {

                            model.removeNodeFromParent(node);

                        }

                    }

                }

            }

        });

        getContentPane().setLayout(new BorderLayout());

        getContentPane().add(tree, BorderLayout.CENTER);

        getContentPane().add(removeButton, BorderLayout.SOUTH);

    }

    public static void main(String[] args) {

        SwingUtilities.invokeLater(new Runnable() {

            public void run() {

                new JTreeRemoveNode().setVisible(true);

            }

        });

    }

}

从JTree删除节点

以上是 Java如何从JTree删除节点? 的全部内容, 来源链接: utcz.com/z/321411.html

回到顶部