插件开发中常用的监听方式

      监听器在插件开发过程上总是必要的,监听的方式有好几种,这里介绍两总常用的监听方式.

一种是在需要的时候直接使用,哪里需要就在哪里添加。这种方式的好处是写代码的时候可以很快的添加,不会打乱逻辑。另一种是创建一个内部类,对各种需要监听的事件进行分类处理。这种方式的好处是可以对监听进行很好的管理,代码显得很精简,模块化。对于事件响应不多的插件可以选择第一种,对于事件响应较多的可以选择第二种方式。

    对于某一个TableView可以选择第一种方式来处理鼠标的响应。

listTableViewer.getTable().addMouseListener(new MouseListener() {			
		@Override
		public void mouseUp(MouseEvent e) {}
		@Override
		public void mouseDown(MouseEvent e) {
                 int index=listTableViewer.getTable().getSelectionIndex();
                      //监听单击,鼠标单击时,获得鼠标选中的那一个表项的索引,并存入index;
                 }
              @Overridepublic void mouseDoubleClick(MouseEvent e) {
                  listTableViewer.refresh();//鼠标双击时,刷新该表单
                }
             });

 

    对于多按钮则需要创建一个类来匹配这样响应,有利于模块化自己的代码。

 public void initButtonListener{
                InnerSelectListener selectListener=new InnerSelectListener();
	        selectCombo.addSelectionListener(selectListener);
                button1.addSelectionListener(selectListener);
                button2.addSelectionListener(selectListener);
                button3.addSelectionListener(selectListener);
                button4.addSelectionListener(selectListener);
             }

 
 

    上面初始化一系列的按钮监听器。对于每一个按钮都为他们添加了一个监听器,所以当我们单击这些按钮的时候,系统会获得这些按钮触发的事件源。那在哪里处理的这些事件源呢?我们创建了一个InnerSelectListener();这就是我们处理事件的地方。我们创建一个类,注意这个类必须要继承SelectionListener这个类。

 private class InnerSelecitionListener implements SelectionListener{
		@Override
		public void widgetDefaultSelected(SelectionEvent event) {//默认的处理方式
		}
		@Override
		public void widgetSelected(SelectionEvent event) {
			Object source = event.getSource();//获得事件源
			if(source.equals(selectCombo)){	
		            //处理下拉框的点击事件,比如获得选中的索引
                            int index=selectCombo.getSelectionIndex();
                        }else if(source.equals(button1)){ 
                            listTableViewer.refresh();//刷新列表
                        }else if(source.equals(button2)){ 
                            listTableViewer.refresh();
                        }else if(source.equals(button3)){ 
                            listTableViewer.refresh();
                        }//对于已经添加了监听器的按钮,可以不实现,点击的时候不处理
                 }
             }

   
 对于每一个按钮可能有实际的功能,这里使用刷新列表代替的。比如,可改变button上的小提示等等。 


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值