Pergunta

Eu só aprendi (a maneira dura) que Components Java só pode ter um DropTarget. Sem suor, eu disse, eu vou adicionar outro DropTargetListener para que DropTarget - apenas para descobrir que DropTargets só pode ter um DropTargetListener

Eu tenho dois DropTargetListeners que escutam para eventos muito diferentes (um lida coisas que estão sendo arrastados e soltos dentro do componente, as outras alças coisas de fora do componente). Devo combiná-los em um DropTargetListener gigante, ou há uma maneira elegante de mantê-los separados?

Foi útil?

Solução

DropTarget é uma fonte unicast, para que você pode adicionar no máximo um DropTargetListener a ele. Eu acredito que deve ser um objeto simples que analisa a fonte (dentro / fora) da coisa que está sendo deixado cair e chama um dos seus DropTargetListeners dependendo do resultado.

Edit: Se você é o inferno dobrado em criar uma solução "universal", então você pode tentar criar um evento de invólucro que passa chamadas de método para o evento original, mas intercepta rejectDrop(), acceptDrop() (e talvez outros métodos que podem causar problemas) , em seguida, passar o wrapper para seus ouvintes, até que um aceita. Isso pressupõe que os ouvintes reconhecem "boas" eventos e agir em conformidade.

Outras dicas

Se você não encontrar uma solução satisfatória, você poderia usar o Composite Pattern para criar um DropTargetListener que tem uma lista de DropTargetListeners criança. Sempre que um de seus métodos são chamados, seria iterar sobre a sua lista de ouvintes e invocar o mesmo método. Isso permitiria que você a entregar uma única DropTargetListener ao Component mas ainda tem vários DropTargetListeners chamado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top