我是Java新手并试图了解以下是否可行:
我有一个从30到55的数字微调器,称之为spinner1。我想链接第二个微调器spinner2,其中值的范围取决于在spinner1中选择的数字。例如如果用户在spinner1中选择30,则可以在spinner2中选择1到100之间的数字。在spinner1中选择55会将spinner2中的值范围限制在1到50之间。
我已经阅读了JSpinner骑行教程,并了解了如何连接两个微调器,但两个微调器都有固定的限制。我真的很想知道这是否可行,任何提示都会受到赞赏。
答案 0 :(得分:0)
您可以链接Spinner模型而不是微调器本身。
SpinnerNumberModel model1 = new SpinnerNumberModel( 10, 10, 90, 10 );
model1.addChangeListener( this );
SpinnerNumberModel model2 = new SpinnerNumberModel( 10, 10, 19, 1 );
这个想法是让旋转器1从10到90步进10并强制旋转器2进入间隔
[spinner1.getValue(), spinner1.getValue()+9]
这是由ChangeListener方法
public void stateChanged(ChangeEvent e){
SpinnerNumberModel model = (SpinnerNumberModel)e.getSource();
Integer value = (Integer)model.getValue();
model2.setMinimum( value );
model2.setMaximum( value + 9 );
if( (Integer)model2.getValue() < value ){
model2.setValue( value );
} else if( (Integer)model2.getValue() > value + 9 ){
model2.setValue( value + 9 );
}
}
将模型传递给JSpinner构造函数:
JSpinner spinner1 = new JSpinner( model1 );
JSpinner spinner2 = new JSpinner( model2 );