Я пытаюсь использовать PropertyChangeListener для определения видимости элемента в панели страниц.
public class PageHistory {
private static final Logger log = LoggerFactory.getLogger(PageHistory.class);
private String visible;
private PropertyChangeSupport support;
/**
* Define the observable. It keeps a reference to a PropertyChangeSupport instance.
* It will send notifications to observers when a property of the class is changed.
*/
public PageHistory() {
support = new PropertyChangeSupport(this);
}
public void addPropertyChangeListener(PropertyChangeListener pcl) {
support.addPropertyChangeListener(pcl);
}
public void removePropertyChangeListener(PropertyChangeListener pcl) {
support.removePropertyChangeListener(pcl);
}
public void setVisible(String value) {
String old = "off";
this.visible = value;
support.firePropertyChange("visible", old, value);
}
Я установил для наблюдаемого параметра значение «on» в другом методе
pageHistory.setVisible("on"); //set the value of the observed property
Ожидаемый результат заключается в том, что я ожидаю, что getVisible () получит значение «on», но вместо этого я получаю ноль.
public class IsAcceptRejectAvailable extends AbstractAvailabilityRule implements PropertyChangeListener {
private String visible;
private PageHistory pageHistory;
public IsAcceptRejectAvailable(PageHistory pageHistory){
this.pageHistory = pageHistory;
pageHistory.addPropertyChangeListener(this);
}
public void propertyChange(PropertyChangeEvent evt) {
this.setVisible((String)evt.getNewValue());
}
public String getVisible() {
return visible;
}
public void setVisible(String visible) {
this.visible = visible;
}
protected boolean isAvailableForItem(Object itemId) {
System.out.println("visibility is " + getVisible());
return getVisible() == "on";
}
}
Я следовал https://docs.oracle.com/javase/tutorial/javabeans/writing/properties.html#bound и https://docs.oracle.com/javase/tutorial/uiswing/events/propertychangelistener.html.
Любые предложения, какую часть я пропускаю здесь