Java 如何在controlP5文本字段中指定数字输入范围?

Java 如何在controlP5文本字段中指定数字输入范围?,java,processing,control-p5,Java,Processing,Control P5,具体来说,当文本字段中的第一个字符为,且为0时,如何防止输入?controlP5过滤器不工作。public void keyPressed(KeyEvent e){int key=e.getKeyCode();if(key=>5&&key=5&&points下面的代码就是您想要的——将它放在draw()的末尾(而不是keyPressed(),因为keyPressed()是在controlP5使用按键事件之前调用的) 但是,您要求的是有问题的。您希望在用户输入时验证数字,而不是在输入完全输入后验证

具体来说,当文本字段中的第一个字符为,且为0时,如何防止输入?controlP5过滤器不工作。public void keyPressed(KeyEvent e){int key=e.getKeyCode();if(key=>5&&key=5&&points下面的代码就是您想要的——将它放在
draw()
的末尾(而不是
keyPressed()
,因为
keyPressed()
是在controlP5使用按键事件之前调用的)

但是,您要求的是有问题的。您希望在用户输入时验证数字,而不是在输入完全输入后验证数字。这导致了一个问题:假设他们希望输入“15”;他们首先输入“1”,但这将被拒绝,因为它不在正确的范围内(5-25)。最好在完全输入后(例如按下enter键时)验证输入,或使用滑块或旋钮

if (keyPressed && textField.isFocus()) {
    float n;
    try {
        n = Float.parseFloat(textField.getText().replace(',', '.')); // may throw exception
        if (!(n >= 5 && n <= 25)) {
            throw new NumberFormatException(); // throw to catch below
        }

    } catch (Exception e2) {
        String t;
        if (textField.getText().length() > 1) {
            t = textField.getText().substring(0, textField.getText().length() - 1);
        } else {
            t = "";
        }
        textField.setText(t);
    }
}
if(按键&&textField.isFocus()){
浮动n;
试一试{
n=Float.parseFloat(textField.getText().replace(',','。);//可能引发异常
如果(!(n>=5&&n 1){
t=textField.getText().substring(0,textField.getText().length()-1);
}否则{
t=“”;
}
textField.setText(t);
}
}

下面的代码就是您想要的——将其放在
draw()
的末尾(而不是
keyPressed()
,因为
keyPressed()
是在controlP5使用按键事件之前调用的)

但是,您要求的是有问题的。您希望在用户输入时验证数字,而不是在输入完全输入后验证数字。这导致了一个问题:假设他们希望输入“15”;他们首先输入“1”,但这将被拒绝,因为它不在正确的范围内(5-25)。最好在完全输入后(例如按下enter键时)验证输入,或使用滑块或旋钮

if (keyPressed && textField.isFocus()) {
    float n;
    try {
        n = Float.parseFloat(textField.getText().replace(',', '.')); // may throw exception
        if (!(n >= 5 && n <= 25)) {
            throw new NumberFormatException(); // throw to catch below
        }

    } catch (Exception e2) {
        String t;
        if (textField.getText().length() > 1) {
            t = textField.getText().substring(0, textField.getText().length() - 1);
        } else {
            t = "";
        }
        textField.setText(t);
    }
}
if(按键&&textField.isFocus()){
浮动n;
试一试{
n=Float.parseFloat(textField.getText().replace(',','。);//可能引发异常
如果(!(n>=5&&n 1){
t=textField.getText().substring(0,textField.getText().length()-1);
}否则{
t=“”;
}
textField.setText(t);
}
}

public void键按下(KeyEvent e){int key=e.getKeyCode();如果(key=>5&&key如果你想将人们可以输入的数字限制在一个特定的范围内,用滑块或旋钮代替文本字段怎么样?我同意你的观点,但我不能在那里加逗号。9.6不同的选项10.5。所以我想在文本框中找到一种方法。addSlider已经在ControlP5中尝试过了。调用getText()怎么样并在每次按下一个键时对照正则表达式检查内容;如果它没有通过正则表达式,则删除最后一个字符。这是一个有趣的解决方案,但代码本身会是什么样子?public void keyPressed(KeyEvent e){int key=e.getKeyCode();如果(key=>5&&key如果你想将人们可以输入的数字限制在一个特定的范围内,用滑块或旋钮代替文本字段怎么样?我同意你的观点,但我不能在那里加逗号。9.6不同的选项10.5。所以我想在文本框中找到一种方法。addSlider已经在ControlP5中尝试过了。调用getText()怎么样并在每次按下一个键时对照正则表达式检查内容;如果它没有通过正则表达式,则删除最后一个字符。这是一个有趣的解决方案,但代码本身会是什么样子?