拖动无标栏的SWT窗口

当我们想用SWT做自定义风格的窗口时,最容易想到的就是去除Shell的Title,但是默认情况下没有Title的Shell是不能拖动的。以下代码实现无Title窗口的拖动:

  1. Listener listener = new Listener() { 
  2.     int startX, startY; 
  3.     public void handleEvent(Event e) { 
  4.         if (e.type == SWT.MouseDown && e.button ==1) { 
  5.             startX = e.x; 
  6.             startY = e.y; 
  7.         } 
  8.         if (e.type == SWT.MouseMove && (e.stateMask & SWT.BUTTON1) !=0) { 
  9.             Point p = shell.toDisplay(e.x, e.y); 
  10.             p.x -= startX; 
  11.             p.y -= startY; 
  12.             shell.setLocation(p); 
  13.         } 
  14.     } 
  15. }; 
  16. shell.addListener(SWT.MouseDown, listener); 
  17. shell.addListener(SWT.MouseMove, listener); 

 

测试了下 不行!!!

发现问题所在了,swt窗口是分级别的,shell出去最下层,如果shell内没有任何控件,以上代码是没问题的,但是如果之上有个form -》composite->lab等控件,一定要在最上层的控件上添加监听才有效,在下层空间加是不会生效的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值