GEF 禁止控件的拖拽, 调整大小

我们最常使用的XYLayout, 控件是可以随意的在四个边框调整大小, 拖拽控件, 有时我们有需要禁止拖拽或调整大小, 具体实现看下面代码.

[color=red][b]解决方法1: [/b][/color]
在createChangeConstraintCommand中,根据具体情况返回UnexecutableCommand.INSTANCE即可.

[color=red][b]具体代码:[/b][/color]
	@Override
protected Command createChangeConstraintCommand(EditPart child, Object constraint) {
if (!this.couldChangeConstraint(child)) {
return UnexecutableCommand.INSTANCE;
}
}



[color=red][b]解决方法2: [/b][/color]
覆盖XYLayoutEditPolicy的createChildEditPolicy()方法即可, 根据具体情况返回ChildEditPolicy.

[color=red][b]具体代码:[/b][/color]
	
/**
* @see org.eclipse.gef.editpolicies.ConstrainedLayoutEditPolicy#createChildEditPolicy(org.eclipse.gef.EditPart)
*/
@Override
protected EditPolicy createChildEditPolicy(EditPart child) {
if (child instanceof PageEditPart) {
NonResizableEditPolicy childEditPolicy = new NonResizableEditPolicy(); // 不允许调整大小
childEditPolicy.setDragAllowed(false); // 不允许拖拽
return childEditPolicy;

} else if (child instanceof PageHeaderEditPart) {
ResizableEditPolicy childEditPolicy = new ResizableEditPolicy();
childEditPolicy.setDragAllowed(false); // 不允许拖拽
childEditPolicy.setResizeDirections(PositionConstants.SOUTH); // 允许下调整大小
return childEditPolicy;
}

return super.createChildEditPolicy(child); // 默认可调整大小,可拖拽
}


[b][color=red]注意: [/color][/b]
这个方法是在某个父控件创建控件的时候就设置好了, 再也不会改变的, 就是对某个EditPart的设置只会有一次, 设置好了即不可再改变.

[color=red][b]具体说明[/b][/color]:
[list]
[*]NonResizableEditPolicy 不允许调整大小
[*]setDragAllowed 是否允许鼠标拖拽
[*]ResizableEditPolicy 可调整大小
[*]setResizeDirections 设置可调整大小的方向
[/list]

[color=red][b]举例:[/b][/color]
PositionConstants.SOUTH '南' 也就是 '下' 可以调整
PositionConstants.SOUTH | PositionConstants.EAST 就是 '下', '右', '下右' 允许调整
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值