解决swt桥连awt后鼠标滚轮事件(MouseEvent)无法接收的问题。

  前段时间做mxgraph流程项目,mxgraph是纯java编写的,流程图有鼠标滚动放大缩小的功能,但是要嵌入到swt中,问题就是嵌入后鼠标滚动事件消失,AWT组件是无法自行接收鼠标滚轮事件尝试各种方法均未找到合适的解决方法,这可能是用这种方式后的一个bug。先直接贴出我用的解决方法:


//AWT和SWT框架联系在一起的桥梁
  		final Composite container = new Composite(parent ,SWT.EMBEDDED);
         	 Frame frame = SWT_AWT.new_Frame(container);  
		 java.awt.event.MouseMotionListener mlAwt = new MouseMotionListener() {
        	@Override
        	public void mouseMoved(MouseEvent e) {
        		container.getDisplay().asyncExec(new Runnable() {
        			@Override
        			public void run() {
        				container.forceFocus();
        			}
        		});
        	}
        	@Override
        	public void mouseDragged(MouseEvent e) {
        	}
        };
        container.addMouseWheelListener(new MouseWheelListener() {
        	@Override
        	public void mouseScrolled(final org.eclipse.swt.events.MouseEvent event) {
//        		BPMClient.moseWheelListener(event.count);
        		EventQueue.invokeLater(new Runnable() {
        		    public void run() {
        		    	System.out.println("滚动事件传递滚动值,
				这里根据event.count值判断是上下滚动");     
        		    }
        		});
                   
        	}
        });



//      给相应的面板传递该事件,提醒AWT鼠标监听器添加到所有被添加进了AWT框架的孩子

        bpmPanel.graphComponent.getGraphControl().addMouseMotionListener(mlAwt);



 此解决方法目前只适合在windows平台下运行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mixiao25184

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值