在CodeName One中拖放

时间:2014-02-25 09:34:31

标签: codenameone

我正在尝试构建一个应用程序,我需要从菜单中选择小部件。将它放在容器上(不是CUT&粘贴,但选择小部件&在其他Container上创建其对应的实例)在Drag&放弃方式。

我无法找到任何帮助。请帮忙。

到目前为止,我已经这样做了,

Label label = new Label("Top Left");
label.setPreferredW(200);
label.setPreferredH(30);
label.getUnselectedStyle().setBgColor(0xff0000);
label.setDraggable(true);
stateMachine.findForm().addComponent(label);

// Setting parent can be recieve drop
stateMachine.findElementContainer().setDropTarget(true);

Container c = new MyContainer();
stateMachine.findElementContainer().addComponent(c);

public class MyContainer extends Container {

    public MyContainer() {
        this.setDropTarget(true);
    } 

    @Override
    public void drop(Component dragged, int x, int y) {
        System.err.println(dragged + " : " + x + " : " + y);
    }

}

但是方法,

public void drop(Component dragged, int x, int y) {

未被调用。

1 个答案:

答案 0 :(得分:1)

您将ElementContainer及其子项都设置为放置目标。你将c添加到Elements容器中,但由于它是FlowLayout(默认值),它的大小不会很大,我假设ElementContainer没有合适的布局大小来给出它的大小合适。

将ElementContainer的布局设置为BorderLayout将c置于中心,并且不要使ElementContainer成为放置目标。您应该看看我如何专门处理布局管理器的视频。设置首选大小不是正确的方向。