2009-11-23 3 views
5

Мне нужна помощь. Можно ли моделировать перетаскивание & без регистрации компонента?
E.g. Я нажимаю кнопку мыши в любом месте окна и удерживаю клавишу мыши в данный момент, я хочу создать или смоделировать DragSourceEvent программно с Java.Перетаскивание с качелями

Возможно ли это?

Update:

Что касается ответа Боба, по крайней мере, я получил его, я могу создать перехватчик для перетаскивания &:

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

но, к сожалению, я получаю это исключение:

java.lang.IllegalArgumentException: Исходные действия в java.awt.dnd.DragSour ceContext. (DragSourceContext.java:169) на java.awt.dnd.DragSource.createDragSourceContext (DragSource.java:454) на java.awt.dnd.DragSource.startDrag (DragSource.java:293) в java.awt.dnd.DragSource.startDrag (DragSource.java:403) на java.awt.dnd.DragGestureEvent.startDrag (DragGestureEvent.java:203)

какие-либо предложения?

+1

Почему вы не хотите регистрировать компонент? Да, возможно, вызывать все правильные API, но вы также можете зарегистрировать компонент и сделать его невидимым и т. Д. – bguiz

ответ

1

вопрос вы спросили: Я не пробовал, но теоретически вы должны быть в состоянии создать объект Event и получить ручку на свинг очереди событий одного из системных классов. Однако, не имея действительного компонента, могут возникнуть проблемы, когда методы пытаются работать с событием.

Что вы, вероятно, имел в виду: регистрации событий для стандартного окна - вы должны быть в состоянии настроить поддержку перетаскивания для пустого JPanel или JFrame, но это займет некоторое взламывание. Drag & Drop - это боль, с которой можно работать на этом уровне, когда он не встроен - я предлагаю использовать что-то вроде невидимого компонента или чего-то другого.

Смежные вопросы