2012-11-27 16 views
0

我有两个JSpinner一个是最小值和另一个最大值设置。如何在java中验证JSpinner的textField中是否设置了最小值和最大值?

我只是希望如果min设置了某个值,那么用户不能输入小于最小文本字段的最小文本字段值(反之亦然)JSpinner

我如何验证使用keylistner和另一个把戏?

+0

请出示演示该问题SSCCE(个人而言,我不太明白如何/在哪里文本字段可能可能开始发挥作用,任何地方...;) – kleopatra

+0

您可能希望在用户单击提交按钮或smth后稍后验证这些值。 –

+0

@kleopatra一个可编辑的'JSpinner'有一个'JTextField'作为编辑器,它可以被'JFormattedTextField'替代以进行验证。这就是说,这个问题不需要,因为你可以将你的模型的值限制在一个区间 – Robin

回答

2

您可以使用SpinnerNumberModel其中设定的最低和最高值

+0

点,但我需要两个微调,我有两个根据 – manav

+1

@manav你的问题是模糊的验证,在这里没有additionl的相关信息,一切,包括你的评论是在这里拍摄到黑暗,张贴有详细的描述了SSCCE什么谁,在哪里,何时,如何..... – mKorbel

+0

@manav看到'BoundedRangeModel',可能是hightlevel事件的帮助betweens'view_to_model',意思是模型中存储的最终值('JSpinner.NumberEditor') – mKorbel

2

你需要附加一个ChangeListener到每个纺纱(模型)。

stateChanged事件被触发,你需要从事件发生哪些模型来确定,并相应更新其他模型。

因此,如果事件来到形式分模型,你需要更新最高型号最小值。

注意,这可能会导致一个级联一系列的更新的,所以您需要为

+0

我想要在按键事件中,如果用户想按无效值,Jspinner文本域拒绝输入它 – manav

+0

不,你不知道。如果您想阻止用户输入无效值,则应使用[文档过滤器](http://docs.oracle.com/javase/tutorial/uiswing/components/generaltext.html)。获取它附带有问题 – MadProgrammer

0

做好准备正如MadProgrammer建议,ChangeListener是正确的做法。

这里有一个简单的代码示例:

//class fields 
    JSpinner lowSpin = new JSpinner(new SpinnerNumberModel()); 
    JSpinner highSpin = new JSpinner(new SpinnerNumberModel()); 

    ChangeListener spinListener = new ChangeListener() { 
     public void stateChanged(ChangeEvent e) { 
      int low = (int) lowSpin.getValue(); 
      int high = (int) highSpin.getValue(); 
      if(high < low) 
       JOptionPane.showMessageDialog(null, "HIGH should not be less than LOW."); //you can change 'null' to the name of your JFrame 
     } 
    }; 

    lowSpin.addChangeListener(spinListener); 
    highSpin.addChangeListener(spinListener); 
+0

感谢大卫, ,但我想使用keylistner Jspinner TextField。如何验证Jspinner文本字段限制值小于16只有 – manav

+0

有一个'JSpinner'构造函数,需要一个'SpinnerNumberModel'实例。这个类又有一个构造函数,用于指定最小值和最大值。只需指定16作为最小值。你不需要听众这样做。另外,关于比较检查,您仍然可以使用KeyListener。只要将上面'stateChanged'方法的内容放在KeyListener的'keyPressed'方法内。 (不要忘记在JSpinner上添加KeyListener。)http://docs.oracle.com/javase/1.4.2/docs/api/javax/swing/SpinnerNumberModel.html – davidXYZ

相关问题