簡體   English   中英

如何為一個組件提供多個DropTargetListener?

[英]How can I give a component more than one DropTargetListener?

我剛剛(艱難地)了解到Java Component只能有一個DropTarget 無汗,我說,我就添加其他DropTargetListenerDropTarget --only地發現DropTarget s只能有一個DropTargetListener

我有兩個DropTargetListener ,它們偵聽非常不同的事件(一個處理在組件內部拖放的事件,另一個處理從組件外部進行的事件)。 我必須將它們組合成一個巨大的DropTargetListener ,還是有一種優雅的方法將它們分開?

如果找不到滿意的解決方案,則可以使用Composite Pattern創建一個DropTargetListener ,該列表具有子DropTargetListener的列表。 每當調用其方法之一時,它將在其偵聽器列表上進行迭代並調用相同的方法。 這樣一來,您可以將單個DropTargetListener傳遞給Component但仍然需要調用多個DropTargetListener

DropTarget是單播源,因此您最多可以向其添加一個DropTargetListener 我相信它應該是一個簡單的對象,它檢查被丟棄的事物的源(內部/外部),並根據結果調用您的DropTargetListener之一。

編輯:如果您rejectDrop()創建一個“通用”解決方案,那么您可以嘗試創建一個包裝事件,該事件將方法調用傳遞給原始事件,但截獲rejectDrop()acceptDrop() (以及可能引起麻煩的其他方法) ),然后將包裝器傳遞給您的聽眾,直到有人接受為止。 這假定偵聽器識別“良好”事件並采取相應措施。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM