【问题标题】:How to restrict dragging in Smart GWT?如何限制 Smart GWT 中的拖动?
【发布时间】:2016-06-23 14:44:53
【问题描述】:
我试图在画布中拖动画布。处理我正在使用的拖动事件
addDragRepositionStartHandler,
addDragRepositionMoveHandler,addDragRepositionStopHandler
处理程序。
我需要在少数情况下限制拖动。假设当我们在public void onDragRepositionMove(DragRepositionMoveEvent event) 中获得超过 500 个event.getX() 时,我想限制拖动。
我试过event.cancel();,但它没有达到目的。我需要的只是限制拖动。
感谢任何形式的帮助。
【问题讨论】:
标签:
javascript
gwt
drag-and-drop
drag
smartgwt
【解决方案1】:
看看this 展示演示。从演示中提取的一些相关代码:
DragPiece green = new DragPiece("pawn_green.png"){
@Override
protected boolean setDragTracker() {
String html = Canvas.imgHTML("pieces/24/pawn_green.png", 24, 24);
EventHandler.setDragTracker(html);
return false;
}
};
green.setID("greenPiece");
green.setTitle("Green Piece");
green.setLeft(150);
green.setTop(50);
final Label label = new Label("Drop Here");
label.setLeft(250);
label.setTop(50);
label.setShowEdges(true);
label.setAlign(Alignment.CENTER);
label.setCanAcceptDrop(true);
label.addDropOverHandler(new DropOverHandler() {
public void onDropOver(DropOverEvent event) {
label.setBackgroundColor("#FFFF88");
}
});
label.addDropOutHandler(new DropOutHandler() {
public void onDropOut(DropOutEvent event) {
label.setBackgroundColor("#ffffff");
}
});
label.addDropHandler(new DropHandler() {
public void onDrop(DropEvent event) {
Canvas target = EventHandler.getDragTarget();
SC.say("You dropped the " + target.getID());
}
});
关于这段代码的一些注释:
- 请注意如何使用标签来定义放置区域,但您可以使用其他
Canvas 对象来实现此目的。
-
addDropOverHandler、addDropOutHandler 和addDropHandler 方法允许您将所需的处理程序添加到此Label 或Canvas 对象以产生所需的结果。
-
DragPiece 只是具有setCanDragReposition(true) 和setCanDrop(true) 的Img 的子类,因此该元素是可拖动的。