سؤال

مكون مخصص الخاص بي يتكون من ثلاثة JTrees inside JPanel. وبعد واحد فقط JTree يجب اختيار في وقت واحد، لذلك لقد أضفت TreeSelectionListener لكل منهم يستدعي clearSelection على المحدد سابقا JTree.

أود إضافة أخرى TreeSelectionListenerS إلى 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 );
           }
    }

 }

نصائح أخرى

ليس حلا جيدا للغاية، ولكن يمكنك التفاف رمز في flowudilities.invokelater (...). سيضيف ذلك الرمز إلى نهاية EDT، مما يعني أنه سيتم تنفيذه في النهاية بعد تنفيذ رمز المستمع الآخر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top