在树中为节点添加动作侦听器

Suh*_*pta 4 java events user-interface swing jtree

我无法将动作侦听器添加到树中的特定节点.这是我构建的一棵树:

在此输入图像描述

我想为每个节点注册一个单独的监听器.现在我已经注册了一个听众JTree.所以,每当我点击tree监听器方法的任何部分开始它的工作.(即现在我有一个共同的倾听者) 我想要的是当我点击音频时,一个听众注册听到音频点击,应该开始它的工作,同样适用于视频.我怎样才能做到这一点 ?

这是我到目前为止的注册方式:

jTree1.addTreeSelectionListener(new javax.swing.event.TreeSelectionListener() {
        public void valueChanged(javax.swing.event.TreeSelectionEvent evt) {
            jTree1ValueChanged(evt);
        }
    });
public void jTree1ValueChanged( TreeSelectionEvent tse ) {...}
Run Code Online (Sandbox Code Playgroud)

oli*_*olz 7

那这个呢.或者你有特殊的PathComponents?

public void jTree1ValueChanged( TreeSelectionEvent tse ) {
     String node = tse.getNewLeadSelectionPath().getLastPathComponent().toString();
    if( node.equals("audio") ) {
        // play audio
    } else if( node.equals("video") ) {
       // play video
    }
}
Run Code Online (Sandbox Code Playgroud)

  • JTree中的TreePath包含从树根开始的TreeNode列表,根节点的子节点A,A的子节点,依此类推.这些子节点的类型由底层TreeModel确定.对于DefaultTreeModel,它们是TreeNode对象.引导选择路径是具有焦点的节点的路径(至少在BasicTreeUI中),因此在您的情况下可能是用户单击的路径.此节点也是路径中的最后一个组件. (3认同)