本文主要是介绍拖拽组件事例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1,页面元素
- < window id = "dropDemoWin" apply = "controller.DropDemoController" >
- < listbox >
- < listitem id = "draged1111111111" draggable = "true" droppable = "true" onDrop = "dropDemoWin$composer.onDropListitem(event)" >
- </ listbox >
- </ window >
如果不知道dropDemoWin$composer怎么来的看这里【zk开发】如何在页面中获得composer对象
2,将拖放的组件添加进来 onDropListitem
- public class DropDemoController extends GenericAutowireComposer {
- public void onDropListitem(DropEvent event) {
- if (!(event.getDragged() instanceof Listitem)) {
- // ZkUtils.showError("some errors");
- return ;
- }
- // event.getDragged()获得你托动过来的组件
- Listitem draggedListitem = (Listitem) event.getDragged();
- // event.getTarget()是你释放鼠标,鼠标下的那个组件,即draggedListitem将要放在那个组件上,或下
- Listitem targetListitem = (Listitem) event.getTarget();
- // //放在目标组件之前
- // targetListitem.getParent()
- // .insertBefore(draggedListitem, targetListitem);
- //当然你也可以放在目标组件之后
- //
- Component afterComp=targetListitem.getNextSibling();
- //后一个组件是托过来的组件,什么都不做
- if (afterComp ==draggedListitem){
- return ;
- }
- if (afterComp== null ){ //如果没有下一个组件说明target是最后一个,直接添加到listbox里
- draggedListitem.detach();
- draggedListitem.setParent(targetListitem.getParent());
- }else { //注意这里的insertBefore的第二个参数
- targetListitem.getParent().insertBefore(draggedListitem, afterComp);
- }
- }
- }
这篇关于拖拽组件事例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!