【发布时间】:2011-10-21 15:14:42
【问题描述】:
我想听一个 JSpinner 的 SpinnerNumberModel 值的变化。
我创建了一个 PropertyChangeSupport 并将模型放入其中。
我需要 propertyChangeListener,因为它显示了属性的旧值和新值。
sn-p 不起作用:当我单击 JSpinner 时,propertyChange 方法不打印任何内容。
一个简单的 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());
}
}
【问题讨论】:
标签: java swing propertychanged propertychangesupport propertychangelistener