PropertyChangeSupport для SpinnerNumberModel

Я хочу слушать изменения значения SpinnerNumberModel для JSpinner.
Я создаю PropertyChangeSupport и помещаю в него модель.

Мне нужен propertyChangeListener, потому что он показывает мне старое и новое значение свойства.

Фрагмент не работает: метод propertyChange ничего не печатает, когда я нажимаю на JSpinner.
Простой ChangeListener дает только новое значение, но мне также нужно старое значение, как я могу его получить?

package de.unikassel.jung;

import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;

import javax.swing.JFrame;
import javax.swing.JSpinner;
import javax.swing.SpinnerNumberModel;

public class PropertyChangeTest implements PropertyChangeListener {

    public static void main(String[] args) {
        new PropertyChangeTest();
    }

    public PropertyChangeTest() {
        JFrame frame = new JFrame();
        frame.setBounds(100, 100, 450, 300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        int value = 1;
        int min = 0;
        int max = 10;
        int step = 1;
        SpinnerNumberModel spinnerModel = new SpinnerNumberModel(value, min, max, step);

        PropertyChangeSupport pcs = new PropertyChangeSupport(spinnerModel);
        pcs.addPropertyChangeListener("value", this);

        JSpinner spinner = new JSpinner(spinnerModel);
        frame.getContentPane().add(spinner);
        frame.setVisible(true);
    }

    @Override
    public void propertyChange(PropertyChangeEvent evt) {
        System.out.println(evt);
        System.out.println(evt.getSource());
    }

}
7
задан timaschew 6 August 2011 в 23:45
поделиться