PropertyChangeListener, возвращающий значение null - PullRequest
0 голосов
/ 08 апреля 2020

Я пытаюсь использовать 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.

Любые предложения, какую часть я пропускаю здесь

...