كيف يمكنني إعطاء عنصر أكثر من DropTargetListener واحد؟
-
05-07-2019 - |
سؤال
ولقد علمت (الطريق الصعب) أن Component
s جافا يمكن أن يكون فقط DropTarget
واحد. لا عرق، قلت، أنا مجرد إضافة DropTargetListener
آخر إلى أن DropTarget
- ليكتشف أن DropTarget
s يمكن أن يكون فقط DropTargetListener
واحد
ولقد اثنين من DropTargetListener
s أن الاستماع للمناسبات مختلفة جدا (واحد يتعامل مع الأمور تسير ببطء وانخفض داخل المكون، والآخر يعالج الأمور من خارج المكون). ولا بد لي من الجمع بينهما في DropTargetListener
عملاق واحد، أم أن هناك طريقة أنيقة للحفاظ على فصل؟
المحلول
وDropTarget
هو مصدر أحادي، بحيث يمكنك إضافة DropTargetListener
واحد على الأكثر لذلك. وأعتقد أنه يجب أن يكون كائن بسيط هو أن يدرس المصدر (داخل / خارج) من الشيء السقوط ويدعو أحد DropTargetListener
s الخاصة بك اعتمادا على النتيجة.
وتحرير: إذا كنت الجحيم مصممة على خلق حل "شامل"، فإنك قد حاول إنشاء الحدث المجمع الذي يمر استدعاءات الأسلوب إلى الحدث الأصلي، ولكن اعتراض rejectDrop()
، acceptDrop()
(وأساليب ربما الأخرى التي يمكن أن تسبب مشكلة) ، ثم تمرير المجمع لمستمعيك، حتى يقبل أحد ذلك. هذا يفترض أن المستمعين التعرف على الأحداث "جيدة" وتتصرف وفقا لذلك.
نصائح أخرى
إذا كنت لا تجد حلا مرضيا، هل يمكن استخدام نمط مركب ل إنشاء DropTargetListener
أن لديه قائمة من DropTargetListener
s الطفل. كلما دعا أحد أساليبها، فإنه أعاد على قائمتها للالمستمعين واستدعاء نفس الأسلوب. ومن شأن ذلك أن يسمح لك لتسليم لDropTargetListener
احد إلى Component
لكن لا تزال لديها DropTargetListener
s متعددة يسمى.