链接两个j微调器,其中一个数字范围取决于另一个中选择的值

时间:2014-09-03 10:06:40

标签: java spinner

我是Java新手并试图了解以下是否可行:

我有一个从30到55的数字微调器,称之为spinner1。我想链接第二个微调器spinner2,其中值的范围取决于在spinner1中选择的数字。例如如果用户在spinner1中选择30,则可以在spinner2中选择1到100之间的数字。在spinner1中选择55会将spinner2中的值范围限制在1到50之间。

我已经阅读了JSpinner骑行教程,并了解了如何连接两个微调器,但两个微调器都有固定的限制。我真的很想知道这是否可行,任何提示都会受到赞赏。

1 个答案:

答案 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 );