Я разработал собственный javaBean для Swing. Теперь я пытаюсь поймать два свойства при изменении, используя PropertyChangeListener.
Проблема в том, что PropertyChangeSupport для одного из моих свойств в JavaBean работает нормально, но, похоже, он не запускает propertyChange для другого объявленного свойства.
Позвольте дать вам некоторые выдержки из моего кода:
JCalendar Bean:
public class JCalendar extends JPanel {
private int startDay, endDay;
private final PropertyChangeSupport pcs = new PropertyChangeSupport(this);
public int getStartDay() {
return startDay;
}
public void setStartDay(int startDay) {
int old = this.startDay;
this.startDay = startDay;
this.pcs.firePropertyChange("startDay", old, startDay);
}
public int getEndDay() {
return endDay;
}
public void setEndDay(int endDay) {
int old = this.endDay;
this.endDay = endDay;
this.pcs.firePropertyChange("endDay", old, endDay);
}
}
Конечно, в Bean-Class есть еще немного кода, но я сократил его, чтобы сохранить его ясным.
Я пытаюсь поймать эти propertyChanges с PropertyChangeListener в другом классе, как это:
class markedDayListener implements PropertyChangeListener {
public void propertyChange(PropertyChangeEvent arg0) {
System.out.println(arg0.getPropertyName());
if(arg0.getPropertyName().equals("startDay")) {
// Do something
} else if(arg0.getPropertyName().equals("endDay")) {
// Do something
}
}
}
Пока мне все кажется правильным. Но по какой-то причине PropertyChangeSupport запускает propertyChange только при изменении startDay. Как только я меняю endDay, вызывается метод setEndDay, но, похоже, не вызывается propertyChange. Я зарегистрировал все события с помощью простых System.out.println (), чтобы увидеть, какие методы вызываются, и обнаружил следующее:
- PropertyChangeListener добавлен правильно и работает при изменении startDay
- setStartDay () и setEndDay () - методы вызываются правильно
- когда вызывается setEndDay (), свойство propertyChangeEvent со свойством sourceSource "endDay" не устанавливается
Я пробовал это уже несколько часов и не понимаю, в чем дело. Надеюсь, кто-то здесь может мне помочь.