java组件JTree问题,怎么给树的子节点注册鼠标双击监听
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java组件JTree问题,怎么给树的子节点注册鼠标双击监听相关的知识,希望对你有一定的参考价值。
就像这个
怎么给park 纵横 vip 这三个子节点注册鼠标双击监听,求大神不吝赐教,解决追分!
然后在mouseClicked(MouseEvent e)方法中通过下面的方法获取所选的结点
TreePath path = testTree.getPathForLocation(e.getX(), e.getY());
TreeNode node = (TreeNode) path.getLastPathComponent();
可以用e.getClickCount()方法的返回值来判断是否双击追问
根结点可以这样注册监听 但是这是子节点啊
追答你通过根节点获得事件,然后看点击是那个子节点,根据子节点去做不同的事情不就可以了吗?
你的目标不就是希望点击不同的子节点来做不同的事情吗?你现在可以获得双击事件,然后你知道点击的是那个节点,这就可以了呀。
不明白,能给写一段小代码么
追答你把你生成这三个节点的代码给我,我晚点给你调通。你的代码给我发信,或者是回帖吧。
追问涉及到链接数据库 就算给你代码你也没法运行啊 卡在这地方好多天了就是不会弄
要不你加我 远程操纵一下好么 万分感谢!
我最近出差中。没有什么时间上来。
追问奥 那行 我先自己鼓捣鼓捣
参考技术A 可已给子节点添加一个鼠标事件监听器涩。tree.addMouseListenerJTree 添加节点和更新
【中文标题】JTree 添加节点和更新【英文标题】:JTree adding nodes and updating 【发布时间】:2014-01-15 23:04:26 【问题描述】:所以我有一个非常有趣的问题:
问题的目标是有一个JTree
、一个文本字段和一个添加按钮;当单击一个节点并且文本字段中有文本时,在按下添加按钮时,一个节点被创建为单击节点的子节点。
我像往常一样实例化一棵树:
tree = new JTree(treeModel);
tree.setEditable( true );
tree.getSelectionModel().setSelectionMode( TreeSelectionModel.SINGLE_TREE_SELECTION );
tree.setShowsRootHandles( true );
然后我设置监听器:
tree.addMouseListener( new MouseAdapter()
@Override
public void mouseClicked( MouseEvent e )
doMouseClicked( e );
);
jButton.addActionListener( new ActionListener()
@Override
public void actionPerformed( ActionEvent e )
if(nodeIsClicked && (!jTextField.getText().isEmpty()))
DefaultMutableTreeNode y = new DefaultMutableTreeNode( jTextField.getText() );
m.add( y );
);
void doMouseClicked(MouseEvent me)
tp = tree.getPathForLocation(me.getX(), me.getY());
if (tp != null )
m = (DefaultMutableTreeNode) tp.getLastPathComponent();
nodeIsClicked = true;
else
nodeIsClicked = false;
奇怪的是,除了我不能完全按照我想要的方式设置更新(基本上将树扩展到刚刚创建的节点)之外,比如说,我添加了 2 个节点到根,然后是我刚刚创建的两个节点之一的另一个节点,当我再次单击根并尝试添加一个新节点时 - 什么都没有。它一直到m.add()
方法,但它只是不添加新节点。
关于我如何解决这个问题的任何想法?想到了什么解决方案?
【问题讨论】:
如需尽快获得更好的帮助,请发布MCVE。顺便说一句,为什么这段代码使用MouseListener
而不是TreeSelectionListener
?
【参考方案1】:
m.add( y );
之后你可以使用:
((DefaultTreeModel) tree.getModel()).nodesWereInserted(m,new int[]m.getChildCount()-1);
根据文档:
在将一些 TreeNode 插入节点后调用此方法。 childIndices 应该是新元素的索引,并且必须按升序排序。
这样可以触发所需的事件并为您提供帮助。
也使用TreeSelectionListener
而不是@AndrewThompson 提到的MouseListener
。
【讨论】:
是的,我对如何实现它感到困惑!非常感谢!我还使用了 TreeSelectionListener,它运行良好,除了树扩展部分,哈哈。谢谢!以上是关于java组件JTree问题,怎么给树的子节点注册鼠标双击监听的主要内容,如果未能解决你的问题,请参考以下文章