我正在尝试通过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 :当我点击小工具的一角时,我注意到“有时”会发生拖动。
答案 0 :(得分:1)
您正在尝试拖动抓取拖动事件的单个组件。我建议尝试类似的事情:
setLeadComponent(title);
这将有效地将整个层次结构转换为一个统一的组件,它可以一起改变状态并作为一个整体运行。
此:
setPreferredH(100);
setPreferredW(400);
是一个错误,你不应该正常使用setPreferred但是如果这样做你应该总是使用:
setPreferredSize(new Dimension(400, 100));