当前位置: 首页 > 面试题库 >

如何将掩码设置为SWT文本以仅允许小数

弘兴言
2023-03-14
问题内容

我想要的是用户只能在文本上输入小数,我不希望它允许文本输入为:

  1. Holle
  2. ABC.34
  3. 34岁
  4. 32.3333.123

我一直在尝试使用VerifyListener,但是它只给了我一部分插入的文本,因此最终我遇到了要插入的文本和插入之前的文本,还尝试将文本合并,但是出现了问题当您删除键(退格键)时,我最终遇到了类似234[BACKSPACE] 455的字符串。

是否可以在将Text设置为Text之前在文本上设置Mask或成功将VerifyEvent与当前文本组合以获得“新文本”?


问题答案:

您将必须ListenerTextusing 上添加一个SWT.VerifyListener您可以在其中验证输入中仅包含十进制数字。

以下内容仅允许在文本字段中插入小数。每次您更改文本中的内容并拒绝它(如果不是十进制)时,它将检查该值。这将解决您的问题,因为在VerifyListener插入新文本之前已执行。新文本必须通过侦听器才能被接受。

public static void main(String[] args) {
    Display display = Display.getDefault();
    final Shell shell = new Shell(display);
    shell.setLayout(new FillLayout());

    final Text textField = new Text(shell, SWT.BORDER);

    textField.addVerifyListener(new VerifyListener() {

        @Override
        public void verifyText(VerifyEvent e) {

            Text text = (Text)e.getSource();

            // get old text and create new text by using the VerifyEvent.text
            final String oldS = text.getText();
            String newS = oldS.substring(0, e.start) + e.text + oldS.substring(e.end);

            boolean isFloat = true;
            try
            {
                Float.parseFloat(newS);
            }
            catch(NumberFormatException ex)
            {
                isFloat = false;
            }

            System.out.println(newS);

            if(!isFloat)
                e.doit = false;
        }
    });

    shell.pack();
    shell.open();
    while (!shell.isDisposed()) {
        if (!display.readAndDispatch())
            display.sleep();
    }
}


 类似资料:
  • 问题内容: 如何只允许在数字中使用而已? 问题答案: 基本思想是: 使用受控组件(使用值和输入字段的onChange属性),并在onChange句柄内部检查输入的值是否为正确的数字。仅当输入的值是有效数字时才更新状态。 为此使用此 正则表达式 : onChange处理程序将为: 工作示例:

  • 我试图在JavaFX中创建一个只接受整数值的TextArea?有谁能给我一些建议,告诉我如何实现这一点吗?

  • 问题内容: 如何将输入限制为文本框,使其仅接受数字和小数点? 问题答案: 这确实有效!

  • 我一直在捕捉非数字时遇到问题。 我试过了,但抓不住。如果我让它捕获非数字,但不让用户再次尝试输入。。。它完全停止了我的代码。 这是我的密码:

  • 问题内容: 有没有一种快速的方法来将HTML文本输入()设置为仅允许数字键击(加’。’)? 问题答案: 注意: 这是更新的答案。下面的注释指的是一个旧版本,其中充斥着密钥代码。 JavaScript 您可以使用以下功能过滤文本的输入值(支持CopyPaste,Drag+Drop,键盘快捷键,上下文菜单操作,不可键入的键,插入标记的位置,不同的键盘布局以及IE9以后的所有浏览器 : 现在,您可以使用

  • 我正在使用我在网上找到的一篇文章中的JavaScript /AngularJS代码摘录。我对它做了一些调整,因为原始帖子在IE 11上不起作用,但除此之外,我正在使用我找到的它。这段代码允许您将Excel文件上传到jQuery数据表并读取。 我缺少一个要求,如果可能的话,我想寻求帮助。该要求是只允许上传Excel文件,没有其他类型的文件应该对用户“可见”。 这是我正在使用的代码: AngularJ