我的问题很简单,不幸的是我找不到答案。 基本上,我有一个Swing窗口,有2个JSpinner
s。第二个JSpinner
必须定义第一个JSpinner
的上限。例如,如果用户在第二个JSpinner
上放置值4,则它们不能在第一个JSpinner
中放置高于4的值。如果当前显示在第一JSpinner
值高于4我将它设置为4获取微调器的当前范围?
所以我已经建立了我的两个JSpinner
s的SpinnerNumberModel
在构造函数中设置初始范围:
// First spinner
SpinnerNumberModel spinnerLimits_sante = new SpinnerNumberModel(3, 0.25, 3, 0.25);
JSpinner spin_sante = new JSpinner(spinnerLimits_sante);
// Second spinner
JSpinner spin_sante_max = new JSpinner(spinnerLimits_sante_max);
SpinnerNumberModel spinnerLimits_sante_max = new SpinnerNumberModel(3, 3, 32767, 1);
为了得到第二个JSpinner
当它改变时的价值,我想过使用它上面的ChangeListener
。所以每当它发生变化时,我都可以获得新值,使用新边界重新创建一个对象(低边界和间隔不会改变,但是高边界将被更新,并且如果它的值将被更新高于上限)。
ChangeListener listenerSanteMax = new ChangeListener() {
public void stateChanged(ChangeEvent e) {
int newBound = spin_sante_max.getValue();
// ...
}
};
spin_sante_max.addChangeListener(listenerSanteMax);
遗憾的是这就是我坚持:JSpinner
没有消气,将返回一个SpinnerNumberModel
对象,也没有自己的价值观。 即使有一个,似乎也没有setter。
所以,我的问题: 是否有可能动态更改微调器的范围和值?
在此先感谢!
从Spinner获取模型(测试它是否是'instanceof' SpinnerNumberModel')并使用它。 *“所以,我的问题:是否有可能动态地改变微调器的范围和价值?“* - 我还没有尝试过,但是一旦拥有了'SpinnerNumberModel',就可以改变它的属性 – MadProgrammer
您是否熟悉类型转换? –