可拖动的& CodeName One中的可调整大小的容器

时间:2014-02-26 08:43:32

标签: codenameone

我正在尝试通过setDraggable使我的自定义小部件成为可拖动的。

第1部分: 我的目标是创建一个带有标题(北)的矩形容器,其中包含其他组件(中心)。 如果我拖动标题,应该只拖动MyWidget。

public class MyWidget extends Container {

    public MyWidget(String labelText) {

        // Temp size. This will be removed after actual components
        // are put into innerContainer 
        setPreferredH(100);
        setPreferredW(400);

        setLayout(new BorderLayout());

        Label title = new Label(labelText);
        addComponent(BorderLayout.NORTH, title);

        Container innerContainer = new Container();

        addComponent(BorderLayout.CENTER, innerContainer);
    }

}

Container myWidget = new MyWidget("MyWidget");
myWidget.setDraggable(true);
当我将它用于Label时,

setDraggable()运行良好,但是当我将相同的方法应用于MyWidget时,我无法拖动。

第2部分: 此外,Plese建议如何在长按时重新调整此小部件的大小。我的目标是在长按和压缩机上为容器提供可调整大小的指示器边缘。在按下,小部件进入调整大小模式。然后我通过拖动边缘来调整组件大小。如果我在MyWidget外单击,调整大小模式将结束。

PS :当我点击小工具的一角时,我注意到“有时”会发生拖动。

1 个答案:

答案 0 :(得分:1)

您正在尝试拖动抓取拖动事件的单个组件。我建议尝试类似的事情:

setLeadComponent(title);

这将有效地将整个层次结构转换为一个统一的组件,它可以一起改变状态并作为一个整体运行。

此:

setPreferredH(100);
setPreferredW(400);

是一个错误,你不应该正常使用setPreferred但是如果这样做你应该总是使用:

setPreferredSize(new Dimension(400, 100));