Как я могу дать компоненту более одного DropTargetListener?

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

  •  05-07-2019
  •  | 
  •  

Вопрос

Я только что (сложным образом) узнал, что в Java Component может быть только один DropTarget . Не беспокойтесь, я сказал, я просто добавлю еще один DropTargetListener к этому DropTarget - только чтобы обнаружить, что у DropTarget может быть только один < код> DropTargetListener

У меня есть два DropTargetListener , которые слушают очень разные события (один обрабатывает вещи, перетаскиваемые в компоненте, другой обрабатывает вещи снаружи компонента). Должен ли я объединить их в один гигантский DropTargetListener или есть элегантный способ разделить их?

Это было полезно?

Решение

DropTarget является источником одноадресной рассылки, поэтому вы можете добавить в него не более одного DropTargetListener . Я считаю, что это должен быть простой объект, который проверяет источник (внутри / снаружи) отбрасываемой вещи и вызывает один из ваших DropTargetListener в зависимости от результата.

Изменить. Если вы одержимы идеей создания " универсального " В этом случае вы можете попытаться создать событие-обертку, которое передает вызовы методов исходному событию, но перехватывает rejectDrop () , acceptDrop () (и, возможно, другие методы, которые могут вызвать проблемы), затем передайте обертку слушателям, пока не примете ее. Это предполагает, что слушатели распознают «хорошо» события и действовать соответственно.

Другие советы

Если вы не найдете удовлетворительного решения, вы можете использовать составной шаблон , чтобы создайте DropTargetListener со списком дочерних DropTargetListener . Каждый раз, когда вызывается один из его методов, он перебирает свой список слушателей и вызывает тот же метод. Это позволит вам передать один DropTargetListener Component , но при этом будет вызываться несколько DropTargetListener .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top