كيف يمكنني إعطاء عنصر أكثر من DropTargetListener واحد؟

StackOverflow https://stackoverflow.com/questions/1400486

  •  05-07-2019
  •  | 
  •  

سؤال

ولقد علمت (الطريق الصعب) أن Components جافا يمكن أن يكون فقط DropTarget واحد. لا عرق، قلت، أنا مجرد إضافة DropTargetListener آخر إلى أن DropTarget - ليكتشف أن DropTargets يمكن أن يكون فقط DropTargetListener واحد

ولقد اثنين من DropTargetListeners أن الاستماع للمناسبات مختلفة جدا (واحد يتعامل مع الأمور تسير ببطء وانخفض داخل المكون، والآخر يعالج الأمور من خارج المكون). ولا بد لي من الجمع بينهما في DropTargetListener عملاق واحد، أم أن هناك طريقة أنيقة للحفاظ على فصل؟

هل كانت مفيدة؟

المحلول

وDropTarget هو مصدر أحادي، بحيث يمكنك إضافة DropTargetListener واحد على الأكثر لذلك. وأعتقد أنه يجب أن يكون كائن بسيط هو أن يدرس المصدر (داخل / خارج) من الشيء السقوط ويدعو أحد DropTargetListeners الخاصة بك اعتمادا على النتيجة.

وتحرير: إذا كنت الجحيم مصممة على خلق حل "شامل"، فإنك قد حاول إنشاء الحدث المجمع الذي يمر استدعاءات الأسلوب إلى الحدث الأصلي، ولكن اعتراض rejectDrop()، acceptDrop() (وأساليب ربما الأخرى التي يمكن أن تسبب مشكلة) ، ثم تمرير المجمع لمستمعيك، حتى يقبل أحد ذلك. هذا يفترض أن المستمعين التعرف على الأحداث "جيدة" وتتصرف وفقا لذلك.

نصائح أخرى

إذا كنت لا تجد حلا مرضيا، هل يمكن استخدام نمط مركب ل إنشاء DropTargetListener أن لديه قائمة من DropTargetListeners الطفل. كلما دعا أحد أساليبها، فإنه أعاد على قائمتها للالمستمعين واستدعاء نفس الأسلوب. ومن شأن ذلك أن يسمح لك لتسليم لDropTargetListener احد إلى Component لكن لا تزال لديها DropTargetListeners متعددة يسمى.

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