当前位置: 代码迷 >> Java相关 >> 请教大神,如何给JTree的节点添加监听?
  详细解决方案

请教大神,如何给JTree的节点添加监听?

热度:138   发布时间:2013-03-21 22:10:18.0
请教大神,如何给JTree的节点添加监听?
我想要对单个节点进行监听  不是对jtree进行监听...而是每个节点都有自己的监听??
我重写了渲染器  也重写了DefaultMutableTreeNode,但是这个TreeNode不是组件  不可以添加监听
有哪位大神知道  请求指导....


[ 本帖最后由 w527705090 于 2013-3-21 22:14 编辑 ]
搜索更多相关的解决方案: 指导  如何  

----------------解决方案--------------------------------------------------------
..
----------------解决方案--------------------------------------------------------
高深呢,帮顶
----------------解决方案--------------------------------------------------------
给你增加人气,捧场!
----------------解决方案--------------------------------------------------------
你准备让TreeNode响应什么事件。可以使用原始的监听啊。只要数据发生变化就可以触发监听。
详细点,可以帮你写个demo。
----------------解决方案--------------------------------------------------------
下面我写了一个简单的例子,其实就是一般的JavaBeans应用,你可以根据需要自己按照这个思路去改动。希望可以满足你的需要。

package _0322;

import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;

import javax.swing.tree.DefaultMutableTreeNode;

public class TreeNodeListenterTest {

    public static void main(String[] args) {
        MyTreeNode treeNode = new MyTreeNode("Node", 1);
        treeNode.addDataLitenter(new PropertyChangeListener() {

            @Override
            public void propertyChange(PropertyChangeEvent evt) {
                System.out.println("I am Change!");
            }
        });
        treeNode.setData(4);
    }
}

class MyTreeNode extends DefaultMutableTreeNode{
   
    private int data;
    private PropertyChangeSupport dataChange = new PropertyChangeSupport(this);
   
    public MyTreeNode(Object userObject, int data) {
        super(userObject);
        this.data = data;
    }
   
    public void setData(int data)
    {
        int oldData = this.data;
        this.data = data;
        dataChange.firePropertyChange("data", oldData, data);
    }
   
    public void addDataLitenter(PropertyChangeListener listenter)
    {
        dataChange.addPropertyChangeListener(listenter);
    }
   
    public void removeDataLiterter(PropertyChangeListener listenter)
    {
        dataChange.removePropertyChangeListener(listenter);
    }
   
   
   
}
----------------解决方案--------------------------------------------------------
顶。。。。。
----------------解决方案--------------------------------------------------------
顶啊,我也想学习下啊,java确实没有c++学的好。支持
----------------解决方案--------------------------------------------------------
回复 6楼 baifenghan
JTree的渲染器我重写了 但是我无法对他监听...我是想添加鼠标事件 ...对选中的节点进行更改,你提供的方法好像是不行的....

----------------解决方案--------------------------------------------------------
顶一下,
----------------解决方案--------------------------------------------------------