如何为java.util.List的数组列表添加侦听器

时间:2014-08-13 05:49:55

标签: java arraylist swt onclicklistener jface

我创建了一个数组列表,当使用鼠标按下事件选择列表项时,必须为它添加一个监听器,以便如何完成。我已经创建了数组列表的代码如下

final java.util.List<Object> listSort = new ArrayList<>();
for(String key: descriptionMappernewer.keySet())
    listSort.add(key);

final MyFilter filter = new MyFilter();

final ListViewer viewer = new ListViewer(this);
//viewer.getList();
viewer.getList().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
//viewer.getList();
viewer.setContentProvider(new ArrayContentProvider());
viewer.setInput(listSort); 

现在我需要为它添加鼠标按下事件监听器。之前我曾写过SWT的鼠标事件监听器,但现在必须改变。早期的SWT监听器看起来像这样

list.addListener(SWT.Selection, new Listener(){
      public void handleEvent(Event e) {
          int index =  list.getSelectionIndex();
          txtMethodDescription.setText(descriptionMappernewer.get( list.getItem(index)));
      }
});

那么请帮助我如何将监听器添加到java.util.List

的数组列表中

1 个答案:

答案 0 :(得分:3)

java.util.List不是用户界面对象,不支持侦听器。

代码中的用户界面对象是ListViewer。由于这是一个JFace对象,因此使用addSelectionListener进行选择:

viewer.addSelectionChangedListener(new ISelectionChangedListener()
  {
    @Override
    public void selectionChanged(final SelectionChangedEvent event)
    {
      IStructuredSelection selection = (IStructuredSelection)viewer.getSelection();

      txtMethodDescription.setText(descriptionMappernewer.get(selection.getFirstElement())));
    }
  });