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

来源:互联网 发布:网络不通怎么排查 编辑:程序博客网 时间:2024/05/24 03:32

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

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

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

listTableViewer.getTable().addMouseListener(new MouseListener() {@Overridepublic void mouseUp(MouseEvent e) {}@Overridepublic 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{@Overridepublic void widgetDefaultSelected(SelectionEvent event) {//默认的处理方式}@Overridepublic 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 0
原创粉丝点击