Java 确认JTextField是否包含值0.5-1?

Java 确认JTextField是否包含值0.5-1?,java,swing,jtextfield,Java,Swing,Jtextfield,我研究了JTextField中输入的验证,但从我所看到的,只能验证输入是字符串、整数还是数字。有人能建议我如何验证数字的具体值吗?例如,它是否在范围0.5-1内。谢谢。一种方法是将Textfield的值解析为如下所示的浮点值 float tfValue = Float.parseFloat(jTextField1.getText()); 然后你可以检查模1是否等于0。如果为true,则该值为整数 if (tfValue % 1 == 0) { System.o

我研究了
JTextField
中输入的验证,但从我所看到的,只能验证输入是
字符串
整数
还是
数字
。有人能建议我如何验证数字的具体值吗?例如,它是否在范围
0.5-1
内。谢谢。

一种方法是将Textfield的值解析为如下所示的浮点值

    float tfValue  = Float.parseFloat(jTextField1.getText());
然后你可以检查模1是否等于0。如果为true,则该值为整数

    if (tfValue % 1 == 0) {
        System.out.println("is an integer");
    }
    else System.out.println("is a float");

试试这个,也许对你有帮助

                JTextField field = new JTextField();
                field.addKeyListener(new java.awt.event.KeyAdapter() {

                    public void keyTyped(java.awt.event.KeyEvent evt) {
                        String text = ((JTextField)evt.getSource()).getText();
                        if (!(evt.getKeyChar() >= '0' && evt.getKeyChar() <= '9')) {
                            // it is number
                        }
                        else if (!(evt.getKeyChar() >= 'a' && evt.getKeyChar() <= 'Z')) {
                            // it is char a-Z
                        }
                        else  {
                            // it others
                        }
                    }
                });
JTextField=newjtextfield();
field.addKeyListener(新java.awt.event.KeyAdapter(){
public void keyTyped(java.awt.event.KeyEvent evt){
字符串文本=((JTextField)evt.getSource()).getText();
如果(!(evt.getKeyChar()>='0'和&evt.getKeyChar()='a'和&evt.getKeyChar()两种可能的方式:

将JTextField的内容解析为双变量,并使用简单的if语句。 您应该使用try-catch块来处理可能的NumberFormatException(如果您的文本无法转换为double)

例如:

double value = 0;
try {
    value = Double.parseDouble (yourTextField.getText ());
}
catch (NumberFormatException e) {
    // Handle exception ...
}
if (value >= 0.5 && value <= 1) {
    // ...
}
else {
    // ...
}

看一看,这有助于解释如何使用它。谢谢,这将帮助我我希望
SpinnerModel model=new SpinnerNumberModel(.5,5,1,01);JSpinner numberRange=new JSpinner(model);
如果
字符串
JTextField.getText()返回
包含除数字以外的任何内容,解析将返回一个
NumberFormatException
。如果要使用此方法,则需要在解析之前使用正则表达式。通常,您不会侦听文本组件上的原始键/鼠标事件,而是侦听底层文档。@Abihabi 87我需要特别进行某种排序确认用户输入值在0.5到1之间,如果不是这样,请不要让他离开further@Mapet听到这个消息我很高兴。请考虑接受我的回答:
System.out.println (Pattern.matches ("(1(\\.0*)?|0?\\.[5-9][0-9]*)", "0.4")); // -> false
System.out.println (Pattern.matches ("(1(\\.0*)?|0?\\.[5-9][0-9]*)", "0..5")); // -> false
System.out.println (Pattern.matches ("(1(\\.0*)?|0?\\.[5-9][0-9]*)", "0.111")); // -> false
System.out.println (Pattern.matches ("(1(\\.0*)?|0?\\.[5-9][0-9]*)", "0.5")); // -> true
System.out.println (Pattern.matches ("(1(\\.0*)?|0?\\.[5-9][0-9]*)", "0.5000543")); // -> true
System.out.println (Pattern.matches ("(1(\\.0*)?|0?\\.[5-9][0-9]*)", "0.50+")); // -> false
System.out.println (Pattern.matches ("(1(\\.0*)?|0?\\.[5-9][0-9]*)", "1.0")); // -> true
System.out.println (Pattern.matches ("(1(\\.0*)?|0?\\.[5-9][0-9]*)", "1.0000")); // -> true
System.out.println (Pattern.matches ("(1(\\.0*)?|0?\\.[5-9][0-9]*)", "1")); // -> true
System.out.println (Pattern.matches ("(1(\\.0*)?|0?\\.[5-9][0-9]*)", "21")); // -> false
System.out.println (Pattern.matches ("(1(\\.0*)?|0?\\.[5-9][0-9]*)", ".56256")); // -> true
System.out.println (Pattern.matches ("(1(\\.0*)?|0?\\.[5-9][0-9]*)", ".46256")); // -> false