不必将 ChangeEvent 对象转换回 JSpinner 对象以便我可以访问 getValue() 方法,为什么 e.getSource() 不简单地返回用于生成事件的类型的预制对象?e.getSource() 的第一次使用清楚地表明它知道正在使用 JSpinner,那么为什么不直接将其回滚呢?好像会更简单。我假设出于安全原因不这样做,但我想看到或听到一个具体的例子,为什么将其作为默认用法是一件坏事。
不安全吗?它只是糟糕的架构吗?
public class SpinnerPanel extends JPanel implements ChangeListener {
...
SpinnerPanel()
{
birthdaySpinner.addChangeListener(this);
add(birthdaySpinner);
}
@Override
public void stateChanged(ChangeEvent e)
{
System.out.println(e.getSource());
JSpinner spinner = (JSpinner)e.getSource();
System.out.println(spinner.getValue());
}
}