org.eclipse.jface.util.IPropertyChangeListener,谁知道这个属性监听器的接口怎么用,那位能给我个例子吗?

解决方案 »

  1.   

    import java.util.ArrayList;import java.util.Iterator;import org.eclipse.jface.util.IPropertyChangeListener;
    import org.eclipse.jface.util.PropertyChangeEvent;public class PersonPlugin {
    private static PersonPlugin personPlugin; ArrayList<IPropertyChangeListener> myListeners = new ArrayList<IPropertyChangeListener>(); // A public method that allows listener registration
    public void addPropertyChangeListener(IPropertyChangeListener listener) {
    if (!myListeners.contains(listener))
    myListeners.add(listener);
    } // A public method that allows listener registration
    public void removePropertyChangeListener(IPropertyChangeListener listener) {
    myListeners.remove(listener);
    } private PersonPlugin() { } public static PersonPlugin getInstance() {
    if (personPlugin == null)
    personPlugin = new PersonPlugin();
    return personPlugin;
    } public void initAndInvoke(ArrayList listeners, Object obj) {
    // Post Invocation, inform listeners
    for (Iterator<IPropertyChangeListener> iter = myListeners.iterator(); iter
    .hasNext();) {
    IPropertyChangeListener element = (IPropertyChangeListener) iter
    .next();
    element.propertyChange(new PropertyChangeEvent(this,
    "HelloRcpEvent", null, obj));
    }
    }
    }
      

  2.   

    Usage:  IPropertyChangeListener listener =
       new IPropertyChangeListener() {
          public void propertyChange(PropertyChangeEvent event) {
             ... // code to deal with occurrence of property change
          }
       };
     emitter.addPropertyChangeListener(listener);
     ...
     emitter.removePropertyChangeListener(listener);
      

  3.   

    如果你是在RCP开发中,用到了PropertyChangeListener,推荐你看一下《RCP 程序设计》或者《Eclipse从入门到精通》中属性页实现的相关章节,很细致地讲述了PropertyChangeListener的使用。