如何在java中验证JSpinner textField的最小值和最大值集?

时间:2012-11-27 11:26:19

标签: java swing jspinner

我有两个JSpinner一个是最小值,另一个是最大值集。

我只想要,如果min设置了一些值,那么用户不能在最大文本字段的JSpinner中输入少于最小文本字段值,反之亦然。

如何使用密钥列表和其他技巧进行验证?

4 个答案:

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