2010-11-27 29 views
0

如何在combobox中的值更改時觸發comboviewer中的事件?不是每一個選擇,都會觸發(addSelectionChangedListener)。我只是想觸發一個事件,只有當前選擇不同的值,不一樣。rcp ComboViewer valueChanged

例如: 組合框,值爲{1,2,3}。我設置爲1.當我打開組合框並單擊1時,它不會觸發事件。但是當我點擊2或3時,它會觸發事件。就像在html中那樣,只會觸發事件,只有事件發生變化。我已經使用comboViewer.getCombo()。addMofidyListener進行了測試。但情況與上面的selectionChangedListener相同(單擊組合框中相同的值將始終觸發事件)。

謝謝

+0

modifyListener在您的案例中正常工作。我在linux下測試過 – Nawa 2010-12-10 10:17:12

回答

2

ComboViewer不能自己做到這一點。嘗試編寫一個可以記住舊值的選擇監聽器。

abstract class CleverSelectionChangedListener implements ISelectionChangedListener { 

    private Object _oldSelection; 

    public void selectionChanged(SelectionChangedEvent event) { 
     Object newSelection = ((IStructuredSelection) event.getSelection()).getFirstElement(); 
     if (newSelection != _oldSelection) { 
      selectionReallyChanged(event); 
      _oldSelection = newSelection; 
     } 
    } 
    public abstract void selectionReallyChanged(SelectionChangedEvent event); 
}