0

具体来说,当第一个字符是 , 和 textField 中的 0 时,如何防止输入?controlP5 过滤器不起作用。public void keyPressed (KeyEvent e) { int key = e.getKeyCode(); if (key => 5 && key <= 25) e.setKeyChar('' ... //x10.setText ? 如何在 textField 中设置数字输入范围 如何防止输入第一个字符 "," 和"0" in textField. if (points> = 5 && points <= 25) {例如 Controlp5 库不起作用。http://www.sojamo.de/libraries/controlP5/reference/controlP5/Textfield.InputFilter.html .

4

1 回答 1

2

下面的代码就是你想要的——把它放在最后draw()(而不是keyPressed()因为keyPressed()在 controlP5 使用键事件之前调用)。

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

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);
    }
}
于 2020-08-01T09:38:35.770 回答