2009-11-23 10 views
5

Potrzebuję pomocy. Czy można symulować upuszczenie kropli & bez rejestracji komponentu?
E.g. Klikam klawisz myszy w dowolnym miejscu okna i przytrzymuję przycisk myszy w tym momencie, chcę programowo utworzyć lub symulować DragSourceEvent z Javą.Drag & Drop with swing

Czy to możliwe?

Aktualizacja:

Odnośnie odpowiedzi Boba, przynajmniej mam go, mogę stworzyć słuchacza do przeciągania & spadku:

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)); 

ale niestety ja dostać ten wyjątek:

java.lang.IllegalArgumentException: Działania źródłowe pod adresem java.awt.dnd.DragSour ceContext. (DragSourceContext.java:169) w java.awt.dnd.DragSource.createDragSourceContext (DragSource.java:454) w java.awt.dnd.DragSource.startDrag (DragSource.java:293) w java.awt.dnd.DragSource.startDrag (DragSource.java:403) na java.awt.dnd.DragGestureEvent.startDrag (DragGestureEvent.java:203)

jakieś sugestie?

+1

Dlaczego jednak nie chcesz rejestrować komponentu? Tak, możliwe jest wywoływanie wszystkich właściwych interfejsów API, ale równie dobrze można zarejestrować komponent i uczynić go niewidocznym itp. – bguiz

Odpowiedz

1

pytanie pytasz: nie próbowałem, ale teoretycznie powinny być w stanie utworzyć obiekt Event i uzyskać uchwyt na huśtawce kolejce zdarzeń z jednej z klas systemowych. Jednak bez ważnego komponentu mogą występować problemy, gdy metody próbują pracować ze zdarzeniem.

Co prawdopodobnie oznaczało: Rejestrowanie zdarzeń w standardowym oknie - powinieneś być w stanie utworzyć przeciągnij i upuść wsparcie dla pustego JPanel lub JFrame, ale zajmie to trochę hacking. Przeciągnij & Drop jest trudny do pracy na tym poziomie, gdy nie jest wbudowany - sugeruję użycie czegoś takiego jak niewidoczny komponent lub coś takiego.

Powiązane problemy