当前位置: 代码迷 >> Web前端 >> 拖拽组件例子
  详细解决方案

拖拽组件例子

热度:62   发布时间:2012-09-19 13:43:53.0
拖拽组件事例

1,页面元素

?

?

Xml代码 ?收藏代码
  1. < window ? id = "dropDemoWin" ? apply = "controller.DropDemoController" > ??
  2. ?< listbox > ??
  3. ???< listitem ? id = "draged1111111111" ? draggable = "true" ? droppable = "true" ? onDrop = "dropDemoWin$composer.onDropListitem(event)" > ??
  4. ?</ listbox > ??
  5. </ window > ??

?如果不知道dropDemoWin$composer怎么来的看这里【zk开发】如何在页面中获得composer对象

?

?

2,将拖放的组件添加进来?onDropListitem

?

?

Java代码 ?收藏代码
  1. public ? class ?DropDemoController? extends ?GenericAutowireComposer?{??
  2. ??
  3. ?????public ? void ?onDropListitem(DropEvent?event)?{??
  4. ????????if ?(!(event.getDragged()? instanceof ?Listitem))?{??
  5. ????????????//?ZkUtils.showError("some?errors"); ??
  6. ????????????return ;??
  7. ????????}??
  8. ????????//?event.getDragged()获得你托动过来的组件 ??
  9. ????????Listitem?draggedListitem?=?(Listitem)?event.getDragged();??
  10. ????????//?event.getTarget()是你释放鼠标,鼠标下的那个组件,即draggedListitem将要放在那个组件上,或下 ??
  11. ????????Listitem?targetListitem?=?(Listitem)?event.getTarget();??
  12. //??????//放在目标组件之前 ??
  13. //??????targetListitem.getParent() ??
  14. //??????????????.insertBefore(draggedListitem,?targetListitem); ??
  15. ????????//当然你也可以放在目标组件之后 ??
  16. ????????// ??
  17. ????????Component?afterComp=targetListitem.getNextSibling();??
  18. ????????//后一个组件是托过来的组件,什么都不做 ??
  19. ????????if (afterComp?==draggedListitem){??
  20. ????????????return ;??
  21. ????????}??
  22. ????????if (afterComp== null ){ //如果没有下一个组件说明target是最后一个,直接添加到listbox里 ??
  23. ????????????draggedListitem.detach();??
  24. ????????????draggedListitem.setParent(targetListitem.getParent());??
  25. ????????}else { //注意这里的insertBefore的第二个参数 ??
  26. ????????????targetListitem.getParent().insertBefore(draggedListitem,?afterComp);??
  27. ????????}??
  28. ??????????
  29. ????}??
  30. ??
  31. }?
  相关解决方案