首页 文章

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

提问于
浏览
0

我试图通过setDraggable使我的自定义小部件成为可拖动的 .

Part 1: 我的目标是创建一个带有 Headers (北)的矩形容器,其中包含其他组件(中心) . 如果我拖动 Headers ,应该只拖动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时,我无法拖动 .

Part 2: 另外,请建议如何在长按时调整此小部件的大小 . 我的目标是在长按和按下时为容器提供可调整大小的指示器边缘,小部件进入调整大小模式 . 然后我通过拖动边缘来调整组件大小 . 如果我在MyWidget外部单击,调整大小模式将结束 .

PS :当我点击小工具的一角时,我注意到拖动正在发生'sometimes' .

1 回答

  • 1

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

    setLeadComponent(title);
    

    这将有效地将整个层次结构转换为单个统一组件,该组件一起更改状态并作为一个组件工作 .

    这个:

    setPreferredH(100);
    setPreferredW(400);
    

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

    setPreferredSize(new Dimension(400, 100));
    

相关问题