我有两个JSpinner
一个是最小值,另一个是最大值集。
我只想要,如果min设置了一些值,那么用户不能在最大文本字段的JSpinner
中输入少于最小文本字段值,反之亦然。
如何使用密钥列表和其他技巧进行验证?
答案 0 :(得分:2)
您可以使用SpinnerNumberModel
设置最小值和最大值
答案 1 :(得分:2)
您可以设置自定义spinnermodel。数字试试
new JSpinner(new SpinnerNumberModel(initvalue,minvalue,maxvalue));
http://docs.oracle.com/javase/tutorial/uiswing/components/spinner.html
答案 2 :(得分:2)
您需要为每个微调器(模型)附加ChangeListener
。
当stateChanged
事件被触发时,您需要确定事件发生的模型,并相应地更新其他模型。
因此,如果事件来自最小模型,则需要更新最大模型最小值。
请注意,这可能会导致一系列级联更新,因此您需要为此做好准备
答案 3 :(得分: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);