繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM