Frage

Ich habe gerade erfahren, (auf die harte Art und Weise), dass Java Components nur ein DropTarget haben können. Nicht ins Schwitzen, sagte ich, ich werde nur einen weiteren DropTargetListener zu diesem DropTarget hinzufügen - nur um zu entdecken, dass DropTargets nur eine DropTargetListener haben

ich zwei DropTargetListeners haben, die für ganz unterschiedliche Veranstaltungen hören (ein Griffe Dinge hineingezogen zu werden und innerhalb der Komponente fallen gelassen, die anderen Griffe Dinge von außerhalb der Komponente). Muss ich sie in einem riesigen DropTargetListener kombinieren, oder gibt es eine elegante Möglichkeit, sie getrennt zu halten?

War es hilfreich?

Lösung

DropTarget ist eine Unicast-Quelle, so dass Sie höchstens ein DropTargetListener ihm hinzufügen. Ich glaube, es sollte eine einfache Aufgabe sein, die die Quelle (innen / außen) der Sache fallen gelassen werden und ruft eine Ihrer DropTargetListeners je nach dem Ergebnis untersucht.

Edit: Wenn Sie versessen sind eine „universelle“ Lösung zum Erstellen, dann versuchen Sie vielleicht ein Wrapper-Ereignis erstellen, die Methode zum ursprünglichen Ereignisse passiert nennt, sondern fängt rejectDrop(), acceptDrop() (und vielleicht auch andere Methoden, die Probleme verursachen kann) passieren, dann die Hülle zu Ihren Zuhörern, bis man sich akzeptiert. Dies setzt voraus, dass die Zuhörer „gut“ Ereignisse erkennen und entsprechend handeln.

Andere Tipps

Wenn Sie keine zufriedenstellende Lösung finden, können Sie das Composite-Muster erstellen DropTargetListener, die eine Liste von Kindern DropTargetListeners hat. Jedes Mal, wenn eine seiner Methoden genannt werden, wäre es über die Liste der Zuhörer iterieren und die gleiche Methode aufrufen. Das würde erlauben Sie einen einzelnen DropTargetListener zum Component zur Hand, aber immer noch mehrere DropTargetListeners genannt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top