سوينغ: ترتيب تنفيذ المستمعين في مكون مخصص
سؤال
مكون مخصص الخاص بي يتكون من ثلاثة JTree
s inside JPanel
. وبعد واحد فقط JTree
يجب اختيار في وقت واحد، لذلك لقد أضفت TreeSelectionListener
لكل منهم يستدعي clearSelection
على المحدد سابقا JTree
.
أود إضافة أخرى TreeSelectionListener
S إلى 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، مما يعني أنه سيتم تنفيذه في النهاية بعد تنفيذ رمز المستمع الآخر.