【问题标题】:How to specify a number input range in a controlP5 textField?如何在 controlP5 文本字段中指定数字输入范围?
【发布时间】:2020-07-30 12:05:39
【问题描述】:

具体来说,当第一个字符是 , 和 textField 中的 0 时,如何防止输入? controlP5 过滤器不起作用。 public void keyPressed (KeyEvent e) { int key = e.getKeyCode(); if (key => 5 && key = 5 && points http://www.sojamo.de/libraries/controlP5/reference/controlP5/Textfield.InputFilter.html.

【问题讨论】:

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

标签: java processing control-p5


【解决方案1】:

下面的代码就是你想要的——把它放在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);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-31
    相关资源
    最近更新 更多