1

当用户对属性表(视图)进行更改时,我试图拦截一个事件。

我已经尝试将PropertyChangeListeners和添加NodeListeners到节点,当节点更改时,它们都不会触发事件。另外,我尝试将 a 添加PropertyChangeListenerPropertySheetView本身,但没有骰子。

有什么我想念的想法吗?

4

1 回答 1

0

您需要添加PropertyChangeSupport到您的模型中(无论您的节点正在包装什么对象)。

private PropertyChangeSupport support = new PropertyChangeSupport(this);

// add interested listeners here
public void addPropertyChangeListener(PropertyChangeListener listener) {
    support.addPropertyChangeListener(listener);
}

// don't forget to remove them
public void removePropertyChangeListener(PropertyChangeListener listener) {
    support.addPropertyChangeListener(listener);
}

然后,当您通过 UI 更改模型的值时,您可以在属性的 setter 中触发属性更改:

public void setMyValue(String myValue) {
    String oldValue = this.myValue;
    this.myValue = myValue;
    support.firePropertyChange("myValue", oldValue, this.myValue);
}

有关更多详细信息,请参阅NetBeans 节点 API教程。此外,如果您在NetBeans 平台用户论坛中询问有关 NetBeans 平台的问题,您可能会获得更好的运气和更快的回复。

于 2011-11-13T14:21:57.380 回答