我正在尝试将可拖动的小部件从边界面板(AbsolutePanel)中删除。在我的情况下,可拖动的小部件是一个图像。我想放下它,这样只有一部分图像可见,但是当我放下它时,以及绝对面板之外的一些图像部分,它会自动下降到绝对面板内。我试过 :
dragController.setBehaviorConstrainedToBoundaryPanel(false);
并认为这意味着我可以将它放在任何我想要的地方,但它不起作用。
我正在尝试将可拖动的小部件从边界面板(AbsolutePanel)中删除。在我的情况下,可拖动的小部件是一个图像。我想放下它,这样只有一部分图像可见,但是当我放下它时,以及绝对面板之外的一些图像部分,它会自动下降到绝对面板内。我试过 :
dragController.setBehaviorConstrainedToBoundaryPanel(false);
并认为这意味着我可以将它放在任何我想要的地方,但它不起作用。
和工作解决方案:) 这是我的代码:
public class myEntripointClass implement EntryPOint{
AbsolutePanel droper;
public void onModuleLoad() {
Panel main = new AbsolutePanel();
droper = new AbsolutePanel();
droper.setHeight("300px");
droper.setWidth("500px");
main.add(droper);
content=new AbsolutePanel();
bt = new Button("Drag and drop it");
content.add(bt);
lb = new Label("Label drag and drop");
content.add(lb);
main.add(content);
manageDnD();
RootPanel.get().add(main);
}
private void manageDnD() {
PickupDragController dragController = new PickupDragController(
(AbsolutePanel) content, true);
dragController.makeDraggable(bt);
dragController.makeDraggable(lb);
dragController.addDragHandler(new DragHandler() {
@Override
public void onPreviewDragStart(DragStartEvent event)
throws VetoDragException {}
@Override
public void onPreviewDragEnd(DragEndEvent event) throws VetoDragException {}
@Override
public void onDragStart(DragStartEvent event) {
}
@Override
public void onDragEnd(DragEndEvent event) {
// TODO Auto-generated method stub
DragContext context = event.getContext();
int x=context.mouseX;
int y= context.mouseY;
droper.add(context.selectedWidgets.get(0),x,y);
}
});
NameDropController dropController = new NameDropController(droper);
dragController.registerDropController(dropController);
dragController.setBehaviorDragProxy(true);
}
我的 DropController 类是:
public class NameDropController extends AbstractDropController{
public NameDropController(Widget dropTarget) {
super(dropTarget);
}
@Override
public void onDrop(DragContext context) {
int x=getDiff(getDropTarget().getAbsoluteLeft(), context.mouseX);
int y=getDiff(getDropTarget().getAbsoluteTop(), context.mouseY);
((AbsolutePanel)getDropTarget()).add(context.selectedWidgets.get(0),x,y);
System.out.print("("+context.mouseX+"::,::"+context.mouseY+")");
}
@Override
public void onMove(DragContext context){
}
private int getDiff(int val1,int val2){
return Math.abs(val1-val2);
}
}