如何使文本阻止输入超过'x'数字?

时间:2011-05-17 08:46:49

标签: textbox numbers swt

我的问题是:

我希望Eclipse RCP中的Text字段只允许将数字作为输入键入,并且要求它应该只允许最多'x'(比如说x = 5)字符。
我怎样才能在RCP中完成它?

我尝试过代码:

txtInput.addListener(SWT.Verify, new DecimalText(
                txtInsuranceValue, 8, 1000.00));

其中txtInput是文本字段。但是当我在运行时重复输入这个字段时,这个监听器失败了。

还有其他选择吗?

2 个答案:

答案 0 :(得分:4)

这会将文本控件中的最大字符数设置为5,并且只允许输入数字:

    txtInput.setTextLimit(5);

    txtInput.addVerifyListener(new VerifyListener() {
        public void verifyText(VerifyEvent event) {
            // Assume we allow it
            event.doit = true;

            String text = event.text;
            char[] chars = text.toCharArray();

            //Don't allow if text contains non-digit characters
            for (int i = 0; i < chars.length; i++) {
                if (!Character.isDigit(chars[i])) {
                    event.doit = false;
                    break;
                }
            }
        }
    });

编辑:我修改了我的答案,允许用户也使用“setText(String string)”设置文本,同时仍禁止使用非数字字符。

答案 1 :(得分:0)

通常,添加verifyListeners / focusListeners等解决方案并不完整,不适用于所有情况。例如,当用户将某些文本复制粘贴到此文本框中时会发生什么?

如果您只想从用户那里获得数字输入,那么您应该使用Spinner小部件而不是Text小部件。您可以轻松地在Spinner上设置最小和最大限制。

有关更多用途,请参阅snippets