Java swing拖拽移動元件

2021-06-26 17:49:57 字數 975 閱讀 8048

首先構造自己的元件,如..component extends jcomponents 。在裡面新增拖拽方法

dragsource dragsource = dragsource.getdefaultdragsource();

dragsource.createdefaultdraggesturerecognizer(this, dndconstants.action_move, new draggesturelistener()

在父容易裡,如..panel extends jpanel 新增拖拽實現。

new droptarget(this, dndconstants.action_move,  new droptargetadapter() 

}

最後還有乙個...transferable implements transferable

如果在...transferable裡傳遞..component物件,在..panel的drop方法裡取得..component後,呼叫..component.setlocation是不能移動元件的。原因是拖拽會將...transferable從新序列化,得到乙個新的..component元件,因為..component繼承了component,而在component裡的parent是transient,所以拖拽後,新..component和..panel容器不會產生關聯,setlocation方法不起作用。

所以只要在..transferable裡傳遞一些標識性,drop裡得到原物件引用即可解決拖拽移動,還可以順便傳遞原座標。

左圖中,右下移動過程中有乙個滑鼠的拖拽游標,右圖為移動完成後

Java Swing元件布局

接受實現了actionlistener介面的物件作為引數。該介面只包含了actionperformed 方法。件,把它放置在 而後把元件向各個方向拉伸,直到與邊框對齊。元件從左到右 流動 到窗體上,直接佔滿上方的空間,然後向下移動一行,繼續流動。gridlayout允許構建乙個放置元件的 在向 裡新...

JS拖拽元件開發

首先,看一下拖拽的原理。被拖拽元素位置的變化,left值的變化其實就是滑鼠位置水平方向的變化值,e.clientx 滑鼠左鍵按下時e.clientx。top值的變化其實就是滑鼠位置豎直方向的變化值,e.clienty 滑鼠左鍵按下時e.clienty。另外就是設定拖拽的範圍,上下左右不得超過父元素所...

Flex元件拖拽(三)

一 最最簡單的是直接呼叫ui元件的startdrag方法和stopdragging方法,這2個方法是flash中的所有繼承於sprite類的元件類都支援的。適用於在同乙個容器中的拖拽。思路是監聽需要拖拽的元件的mouse down和mouse up事件,剩下來的有flash幫你自動完成。eg pri...