【问题标题】:property change lister does not invoke the method propertychangeevent属性更改列表器不调用方法 propertychangeevent
【发布时间】:2014-10-13 07:30:50
【问题描述】:

以下是我关于属性更改的代码。如果我使用此代码, public void propertyChange(PropertyChangeEvent evt) 将被正确调用。

public void setWeekDate(Date weekDate) {        
   firePropertyChange("weekDate", this.weekDate, this.weekDate = weekDate);     
}

但如果我使用下面的代码public void propertyChange(PropertyChangeEvent evt) 将不会 调用。

public void setWeekDate(Date weekDate) {
    this.weekDate = weekDate;   
    firePropertyChange("weekDate", this.weekDate, weekDate);
}

谁能告诉我上面的代码有什么问题?

【问题讨论】:

  • 请提供方法firePropertyChange
  • 你是否调试过代码是否步入方法?

标签: java swing propertychangelistener


【解决方案1】:

在第二种情况下,您提供了两次相同的值。如果值实际上没有改变,我猜 firePropertyChange 什么都不做。试试这个:

public void setWeekDate(Date weekDate) {
    Date oldValue = this.weekDate;
    this.weekDate = weekDate;   
    firePropertyChange("weekDate", oldValue, this.weekDate);
}

【讨论】:

  • 对不起,这是我的错误。我已经修改了代码。我也会试试你的代码谢​​谢..
  • 看看组件的代码。它实际上检查两个对象是否相同: if (changeSupport == null ||(oldValue != null && newValue != null && oldValue.equals(newValue))) { return; }
  • @akf:虽然从未指定这是 Java 组件的实例。 firePropertyChange 可以是自定义方法。
  • @DavidtenHove JDK 中的几乎所有代码都使用相同的约定,该约定记录在当时的PropertyChangeSupport 类中。
猜你喜欢
  • 2019-02-04
  • 2023-03-30
  • 1970-01-01
  • 2018-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-19
  • 1970-01-01
相关资源
最近更新 更多