具体来说,当第一个字符是 , 和 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 .
问问题
371 次
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 回答