我的自定义组件由JTree中的三个JPanel组成。一次只能选择一个JTree,因此我为每个添加了一个TreeSelectionListener,它们在先前选择的clearSelection上调用了JTree

我想将其他TreeSelectionListener添加到JTree中,以确保总是先执行选择处理侦听器。我不希望将所有内容放在单个TreeSelectionListener中。

我该怎么办?提前致谢!

最佳答案

可能您可以通过将新的侦听器添加到现有侦听器中来将它们链接起来,这样,下次调用侦听器时,它将依次将事件转发给其侦听器。

// This is your current listener implementation
class CustomTreeSelectionListener implements TreeSelectionListener {

    // listeners to which the even will be forwarded
    private List<TreeSelectionListener> ownLIsteners;


    public void addListener( TreeSelectionListener newListener ) {
         ownListeners.add( newListener );
    }

    // add also removeListener( ....  )

    // TreeSelectionListener interface implementation...
    public void valueChanged( TreeSelectionEvent e ) {
           process( e ); // do what you do now

           // Forward the message.
           for( TreeSelectionListener listener : ownListeners ) {
                listener.valueChanged( e );
           }
    }

 }

10-05 21:16