我用这样的 as 模型制作了一个JSpinner
组件:SpinnerNumberModel
JSpinner spinbox = new JSpinner(new SpinnerNumberModel(2, 1, 7, 1));
我添加了一个监听器来检测变化。
spinbox.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent arg0) {
synchronized (this) {
System.out.println("New value: " +
((Integer)_spiNumOfAIs.getValue()).intValue());
}
}
});
然而,我所看到的只是:
新值:0
新值:0
我是否错误地读出了旋转框的值?
如果你想知道这个synchronized
块:我是 Swing 的新手,我不知道动作监听器是否在我创建的同一个线程上执行JDialog
,所以我为所有动作监听器采取了线程安全措施注意安全。_spiNumOfAIs
是成员变量。
编辑:即使从这个小代码片段中也很明显,我什至没有看到它......在重构时我忘记了我同时使用 aJSpinner spinbox
和 a JSpinner _spiNumOfAis
,前者是 GUI 中可见的微调器。