2009-11-23 32 views
5

Necesito ayuda. ¿Es posible simular un arrastre & sin registrar un componente?
P. ej. Hago clic en la tecla del mouse en cualquier lugar de la ventana y mantengo presionada la tecla del mouse, en este momento, quiero crear o simular un DragSourceEvent programáticamente con Java.Arrastrar y soltar con columpio

¿Esto es posible?

Actualización:

cuanto a la respuesta de Bob, al menos lo tengo, puedo crear un detector para el arrastrar y 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)); 

pero desafortunadamente i obtener esta excepción:

java.lang.IllegalArgumentException: acciones de origen en java.awt.dnd.DragSour ceContext. (DragSourceContext.java:169) en java.awt.dnd.DragSource.createDragSourceContext (DragSource.java:454) en java.awt.dnd.DragSource.startDrag (DragSource.java:293) en java.awt.dnd.DragSource.startDrag (DragSource.java:403) en java.awt.dnd.DragGestureEvent.startDrag (DragGestureEvent.java:203)

alguna sugerencia?

+1

¿Por qué no desea registrar un componente? Sí, es posible llamar a la API correcta, pero también podría registrar un componente y hacerlo invisible, etc. – bguiz

Respuesta

1

La pregunta que hiciste: Yo no lo he probado, pero en teoría usted debería ser capaz de crear el objeto de evento y tener una idea de la oscilación de la cola de eventos desde una de las clases del sistema. Sin embargo, sin tener un componente válido, puede haber problemas cuando los métodos intentan funcionar con el evento.

Lo que probablemente significaba: eventos de registrarse para una ventana estándar - usted debe ser capaz de establecer arrastrar y soltar apoyo a un JPanel vacíos o JFrame, pero va a tomar un poco de piratería informática. Arrastrar & Dejar caer es un dolor para trabajar en este nivel cuando no está incorporado: sugiero usar algo así como un componente invisible o algo en su lugar.