2009-11-23 78 views
5

我需要一些幫助。是否有可能模仿沒有註冊組件拖拽&下降?
例如我點擊鼠標鍵的任何地方在窗口上按住鼠標鍵下來,在這一刻,我想創建或使用Java模擬DragSourceEvent編程。拖放擺動

這可能嗎?

更新:

關於鮑勃的答覆,至少我得到了它,我可以拖動&降創建一個監聽器:

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 2009-11-23 23:26:52

回答

1

你問的問題: 我還沒有嘗試過,但在理論上你應該能夠從系統類之一創建事件對象,並獲得了Swing事件隊列的句柄。但是,如果沒有有效的組件,當方法嘗試處理事件時可能會出現問題。

什麼你可能是指: 的標準窗口註冊的事件 - 你應該能夠成立拖放一個空的JPanel或JFrame的支持,但它會採取一些黑客。拖動&拖放是一種痛苦,可以在此級別上工作,而不是內置 - 我建議使用類似不可見組件或其他東西的東西。