[英]how to validate JSpinner textField in java for minimum and maximum value set?
我有两个JSpinner
一个用于最小值,另一个用于最大值设置。
我只希望如果将min设置为某个值,那么用户不能在最大文本字段的JSpinner
中输入小于最小文本字段的值,反之亦然。
如何使用keylistner和其他技巧进行验证?
您可以使用SpinnerNumberModel
设置最小值和最大值
您可以设置自定义微调器模型。 对于数字尝试
new JSpinner(new SpinnerNumberModel(initvalue,minvalue,maxvalue));
http://docs.oracle.com/javase/tutorial/uiswing/components/spinner.html
您需要将ChangeListener
附加到每个微调器(模型)。
当触发stateChanged
事件时,您需要确定事件从哪个模型发生,并相应地更新另一个模型。
因此,如果事件来自最小模型,则需要更新最大模型的最小值。
请注意,这可能会导致一系列级联的更新,因此您需要为此做好准备
正如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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.