实现无标题栏窗口的拖动

SWT窗口程序默认是带标题栏的,窗口栏有最小化、最大化、关闭按钮,我们可以拖动标题栏实现窗口的移动

此时窗口不能拖动了,只能通过加监听事件实现

当我们加入下面这段代码,就能实现窗口的拖动了,如果窗口的上方没有任何控件覆盖,这时窗口的任何地方都能产生拖动效果,如果有覆盖,则覆盖的地方不能产生拖动效果。

 //给窗口加监听 事件
		Listener listener = new Listener() {  
		    int startX, startY;  
			@Override
			public void handleEvent(Event arg0) {
				if (arg0.type == SWT.MouseDown && arg0.button == 1) {  
		            startX = arg0.x;  
		            startY = arg0.y;  
		        }  
		        if (arg0.type == SWT.MouseMove && (arg0.stateMask & SWT.BUTTON1) != 0) {  
		            Point p = shell.toDisplay(arg0.x, arg0.y);  
		            p.x -= startX;  
		            p.y -= startY;  
		            shell.setLocation(p);  
		        } 
				
			}  
		};  
		shell.addListener(SWT.MouseDown, listener);    //鼠标按下
		shell.addListener(SWT.MouseMove, listener);    //鼠标移动
 
            //从而实现鼠标拖动窗口

如果想让shell上方的控件也能产生拖动窗口拖动效果,只需要给对应的控件加上监听就行,如:

//给label加上监听
label.addListener(SWT.MouseDown, listener);  
label.addListener(SWT.MouseMove, listener);  

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值