我有两个JSpinner
一个是最小值和另一个最大值设置。如何在java中验证JSpinner的textField中是否设置了最小值和最大值?
我只是希望如果min设置了某个值,那么用户不能输入小于最小文本字段的最小文本字段值(反之亦然)JSpinner
。
我如何验证使用keylistner和另一个把戏?
我有两个JSpinner
一个是最小值和另一个最大值设置。如何在java中验证JSpinner的textField中是否设置了最小值和最大值?
我只是希望如果min设置了某个值,那么用户不能输入小于最小文本字段的最小文本字段值(反之亦然)JSpinner
。
我如何验证使用keylistner和另一个把戏?
您可以设置自定义的SpinnerModel。对于数字尝试
new JSpinner(new SpinnerNumberModel(initvalue,minvalue,maxvalue));
http://docs.oracle.com/javase/tutorial/uiswing/components/spinner.html
你需要附加一个ChangeListener
到每个纺纱(模型)。
当stateChanged
事件被触发,你需要从事件发生哪些模型来确定,并相应更新其他模型。
因此,如果事件来到形式分模型,你需要更新最高型号最小值。
注意,这可能会导致一个级联一系列的更新的,所以您需要为
我想要在按键事件中,如果用户想按无效值,Jspinner文本域拒绝输入它 – manav
不,你不知道。如果您想阻止用户输入无效值,则应使用[文档过滤器](http://docs.oracle.com/javase/tutorial/uiswing/components/generaltext.html)。获取它附带有问题 – MadProgrammer
做好准备正如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);
感谢大卫, ,但我想使用keylistner Jspinner TextField。如何验证Jspinner文本字段限制值小于16只有 – manav
有一个'JSpinner'构造函数,需要一个'SpinnerNumberModel'实例。这个类又有一个构造函数,用于指定最小值和最大值。只需指定16作为最小值。你不需要听众这样做。另外,关于比较检查,您仍然可以使用KeyListener。只要将上面'stateChanged'方法的内容放在KeyListener的'keyPressed'方法内。 (不要忘记在JSpinner上添加KeyListener。)http://docs.oracle.com/javase/1.4.2/docs/api/javax/swing/SpinnerNumberModel.html – davidXYZ
请出示演示该问题SSCCE(个人而言,我不太明白如何/在哪里文本字段可能可能开始发挥作用,任何地方...;) – kleopatra
您可能希望在用户单击提交按钮或smth后稍后验证这些值。 –
@kleopatra一个可编辑的'JSpinner'有一个'JTextField'作为编辑器,它可以被'JFormattedTextField'替代以进行验证。这就是说,这个问题不需要,因为你可以将你的模型的值限制在一个区间 – Robin