`

JTree节点编辑事件

阅读更多
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.event.CellEditorListener;
import javax.swing.event.ChangeEvent;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;

public class Test extends JFrame{
    static int i = 0;
    DefaultMutableTreeNode root;
    /* DefaultMutableTreeNode是树数据结构中的通用节点 */
    DefaultMutableTreeNode child;
    DefaultMutableTreeNode chosen;
    JTree tree;
    DefaultTreeModel model; // 使用 TreeNodes 的简单树数据模型.
    String[][] data =
            {{"体育","足球","篮球","乒乓球"},{"娱乐","唱歌","跳舞","相声","小品"},{"电视","长虹","海尔","创维"},{"戏剧","京剧","川剧","越剧"},
                    {"国家","中国","越南","朝鲜","德国"},{"武器","飞机","大炮","坦克"}};
    Test(){
        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());
                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[]){
        new Test();
    }
}

 
分享到:
评论

相关推荐

    jtree节点可编辑

    3. **监听编辑事件**: 我们可以注册`TreeWillExpandListener`来监听树节点的展开和折叠,以及`TreeSelectionListener`来监听节点的选择变化。此外,`TreeCellEditor`会触发`EditingStopped`事件,我们可以在事件...

    java Swing JTree的教程实例

    JTree支持编辑节点的文本,需要启用`JTree`的编辑功能。这通常通过设置`TreeCellEditor`和`TreeCellRenderer`来实现。在日志管理系统中,可能需要编辑节点以更新日志条目。要实现编辑,可以调用`JTree`的`...

    jtree

    在Swing中,`JTree`默认并不支持节点带有复选框,但可以通过自定义`CellRenderer`和`CellEditor`来实现这一功能。下面我们将详细探讨如何在`JTree`中加入复选框。 1. **创建复选框树节点:** 首先,我们需要创建一...

    JTree的实现代码

    实现JTree还可以包含许多扩展功能,如拖放排序、搜索、节点编辑等,这些都需要额外的JavaScript逻辑和可能的库支持。 总的来说,实现一个JTree涉及前端开发的多个方面,包括HTML布局、CSS样式、JavaScript编程以及...

    (一)如何使用JTree

    为了响应用户的交互,比如点击或展开/折叠节点,我们可以为JTree添加事件监听器,如TreeSelectionListener和TreeWillExpandListener: ```java jTree.addTreeSelectionListener(new TreeSelectionListener() { ...

    详细介绍JTree控件的教程以及源码

    本教程将深入讲解JTree的使用方法,包括创建、配置、事件处理以及自定义节点图标等方面,同时提供相关的源码示例。 1. **创建JTree** 创建JTree的基本步骤是创建一个TreeNode对象或TreeModel,然后将其传递给JTree...

    JTree的Doc文档

    5. **定制行为**:`JTree`提供了很多方法来定制其行为,如`setEditable()`(设置是否允许编辑节点)、`setShowsRootHandles()`(显示或隐藏根节点的手柄)。 6. **遍历和访问节点**:可以使用`TreePath`和`...

    Java JTree+JTable应用

    这可能涉及到监听`JTree`的选择事件,然后根据选中节点的数据生成`JTable`的行。这通常通过实现`TreeSelectionListener`接口并重写`valueChanged`方法来完成。 `JTextPane`和`JSplitPane`是额外提及的两个组件。`...

    jtree和QQ项目 树上闪动的节点动态化(根据QQ号来消息闪动)

    jtree和QQ项目 树上闪动的节点动态化(根据QQ号来消息闪动)

    JAVA JTREE JTABLE实例代码

    JTree可以动态地加载数据,支持单选和多选模式,还可以通过添加监听器来处理用户的点击事件。在实际项目中,你可以通过DefaultTreeModel或者自定义的TreeModel来创建和管理JTree的数据。 例如,以下是一个简单的...

    netbeans-Jtree

    在`JTree`中,每个节点可以有子节点,这种结构可以无限递归,形成多层级的树。在本项目中,树有三级深度,意味着用户可以展开节点查看其下一级的子节点,直至第三级。 创建`JTree`通常涉及以下步骤: 1. **创建...

    swing界面设计之JTree

    - **MyDefaultTreeCellRenderer.java源代码**:示例代码展示了如何定制JTree节点的渲染器。 #### (十五) JTree控件 **树和节点的基本概念**:介绍了树的基本概念和节点之间的关系。 - **有关树JTree的类和接口**:...

    MeJT.rar_jtree

    接着,可能还会设置JTree的各种属性,如是否允许编辑节点,以及选择模式等。 在代码中,开发者可能还使用了事件监听器,比如TreeSelectionListener,以便在用户选择树中的不同节点时执行某些操作。这通常是通过实现...

    JTable_JTree.rar_JTable Java_JTree JTable_jtree

    这可能涉及到将`JTable`嵌入到`JTree`的一个节点中,或者反之,以提供更丰富的用户界面。这种组合在展示具有复杂层次关系的数据时特别有用。 使用`JTable`和`JTree`的关键步骤包括: 1. **创建模型**:根据数据...

    JavaSwing中的JTree模型.pdf

    JTree 模型的主要组成部分包括树节点、树模型和树细胞编辑器。树节点是树的基本组成单元,可以是文件夹或树叶。树模型是 JTree 的核心,负责管理树的结构和节点的关系。树细胞编辑器是 JTree 的可视化组件,负责将树...

    Login_Java.rar_The Given_jtree

    同时,JTree还支持通过CellEditor进行编辑操作,让用户可以直接在树中修改节点内容。 5. **拖放操作** JTree支持拖放操作,通过实现DragSource和DropTarget接口,可以实现节点的移动和复制。 6. **性能优化** ...

    jtree和QQ项目\带有右键的树(数据库)

    当用户在`JTree`上点击右键时,可以通过监听鼠标事件并显示`JPopupMenu`来提供一系列与选中节点相关的操作。例如,用户可以右键点击某个表节点,弹出的菜单中包含“查看数据”、“编辑表结构”、“删除表”等选项。...

    javaJTree编程(源代码)

    此外,JTree可以自定义外观,比如通过设置CellRenderer来改变节点的显示方式,或者通过设置CellEditor来实现节点的编辑功能。同时,JTree还可以与TableModel配合,动态加载和更新数据。 总的来说,这个“javaJTree...

    用XML来配置的多级目录树菜单插件JTree2.0

    JTree不仅提供了基本的节点操作,如展开、折叠、选择和遍历,还可以自定义节点图标、拖放操作,以及通过监听器响应用户的交互事件。 **XML配置**: XML(可扩展标记语言)是一种标记语言,常用于存储和传输结构化...

Global site tag (gtag.js) - Google Analytics