/ / Arrastar e soltar com swing - java, swing

Arrastar e soltar com swing - java, swing

Eu preciso de ajuda. É possível simular um arrastar e soltar sem registrar um componente?
Por exemplo. Eu clico na tecla do mouse em qualquer lugar da janela e segure a tecla do mouse para baixo, neste momento, eu quero criar ou simular um DragSourceEvent programaticamente com Java.

Isso é possível?

Atualizar:

Em relação à resposta de Bob, pelo menos eu entendi, eu posso criar um ouvinte para o arrastar e soltar:

DragSource dragSource = new DragSource();
DragGestureListener listener = new DragGestureListener() {
public void dragGestureRecognized(DragGestureEvent event) {
event.startDrag (null, strSel) ;
...
}
}

listener.dragGestureRecognized(new DragGestureEvent(
new DragGestureRecognizer(dragSource, component) {

}, DnDConstants.ACTION_COPY, new Point(0,0), events ));

mas infelizmente eu recebo esta exceção:

java.lang.Exceção de argumento ilegal: ações de fonte em java.awt.dnd.DragSourceContext. (DragSourceContext.java:169) a java.awt.dnd.DragSource.createDragSourceContext (DragSource.java:454) a java.awt.dnd.DragSource.startDrag (DragSource.java:293) a java.awt.dnd.DragSource.startDrag (DragSource.java:403) a java.awt.dnd.DragGestureEvent.startDrag (DragGestureEvent.java:203)

alguma sugestão?

Respostas:

1 para resposta № 1

A pergunta que você fez: Eu não tentei, mas em teoria você deveria estarcapaz de criar o objeto Event e obter um identificador na fila de eventos Swing de uma das classes do sistema. No entanto, sem ter um componente válido, pode haver problemas quando os métodos tentam trabalhar com o evento.

O que você provavelmente quis dizer: Registrando eventos para uma janela padrão - vocêdeve ser capaz de configurar o suporte a arrastar e soltar para um JPanel ou JFrame vazio, mas ele vai levar algum hacking. Arrastar e soltar é um saco para trabalhar nesse nível quando não integrado - sugiro usar algo como um invisível componente ou algo em vez disso.