欢迎访问宙启技术站
智能推送

javax.swing库中的树状控件的使用方法

发布时间:2023-12-23 07:34:11

javax.swing库中提供了多种树状控件,其中最常用的是JTree组件。JTree是一个可以展示层次结构数据的树状结构控件,用户可以展开节点、选择节点、编辑节点等操作。

下面是使用JTree控件的一个示例:

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

public class TreeExample extends JFrame {
    private JTree tree;
    
    public TreeExample() {
        // 创建树状数据模型
        DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root");
        
        DefaultMutableTreeNode node1 = new DefaultMutableTreeNode("Node 1");
        DefaultMutableTreeNode node2 = new DefaultMutableTreeNode("Node 2");
        DefaultMutableTreeNode node3 = new DefaultMutableTreeNode("Node 3");
        
        DefaultMutableTreeNode leaf1 = new DefaultMutableTreeNode("Leaf 1");
        DefaultMutableTreeNode leaf2 = new DefaultMutableTreeNode("Leaf 2");
        DefaultMutableTreeNode leaf3 = new DefaultMutableTreeNode("Leaf 3");
        
        node1.add(leaf1);
        node1.add(leaf2);
        node2.add(leaf3);
        
        root.add(node1);
        root.add(node2);
        root.add(node3);
        
        // 创建JTree控件
        tree = new JTree(root);
        
        // 设置树状控件的监听器
        tree.addTreeSelectionListener(new TreeSelectionListener() {
            @Override
            public void valueChanged(TreeSelectionEvent e) {
                // 获取用户选择的节点
                DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();
                
                if (selectedNode.isLeaf()) {
                    // 如果是叶子节点,则显示节点的文本内容
                    System.out.println("Selected Leaf Node: " + selectedNode.getUserObject());
                } else {
                    // 如果是非叶子节点,则获取所有子节点
                    TreeNode[] childNodes = selectedNode.getPath();
                    StringBuilder path = new StringBuilder();
                    
                    for (int i = 0; i < childNodes.length; i++) {
                        path.append(childNodes[i]).append("/");
                    }
                    
                    // 显示节点的完整路径
                    System.out.println("Selected Non-Leaf Node: " + path.toString());
                }
            }
        });
        
        // 将树状控件添加到窗口中
        getContentPane().add(new JScrollPane(tree));
        
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(400, 300);
        setLocationRelativeTo(null);
        setVisible(true);
    }
    
    public static void main(String[] args) {
        new TreeExample();
    }
}

这个示例创建了一个简单的树状结构,根节点为"Root",它有三个子节点"Node 1"、"Node 2"和"Node 3"。其中"Node 1"有两个子节点"Leaf 1"和"Leaf 2","Node 2"只有一个子节点"Leaf 3"。

用户可以通过展开节点来查看节点的子节点,并选择某个节点来获取节点的信息。如果选择的是叶子节点,则打印该节点的文本内容;如果选择的是非叶子节点,则打印该节点的完整路径。

以上是javax.swing库中树状控件的使用方法的一个简单示例。根据实际需求,你可以通过添加子节点、编辑节点等操作来定制自己的树状控件。