繁体   English   中英

防止用户在SWT中输入文本字段中的字符

Prevent User From Entering Characters in a Text Field in SWT

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我希望用户只能写数字和空格。

我怎样才能在SWT中做到这一点?

3 个回复

使用VerifyListener并根据用户输入拒绝字符。

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.VerifyEvent;
import org.eclipse.swt.events.VerifyListener;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;

public class Test {

    public static void main(String[] args) {
        Display display = new Display();
        Shell shell = new Shell(display);

        final Text text = new Text(shell, SWT.BORDER);
        text.addVerifyListener(new VerifyListener() {

            @Override
            public void verifyText(VerifyEvent e) {
                // allows cut (CTRL + x)
                if (e.text.isEmpty()) {
                    e.doit = true;
                } else if (e.keyCode == SWT.ARROW_LEFT ||
                            e.keyCode == SWT.ARROW_RIGHT ||
                            e.keyCode == SWT.BS ||
                            e.keyCode == SWT.DEL ||
                            e.keyCode == SWT.CTRL ||
                            e.keyCode == SWT.SHIFT) {
                    e.doit = true;
                } else {
                    boolean allow = false;
                    for (int i = 0; i < e.text.length(); i++) {
                        char c = e.text.charAt(i);
                        allow = Character.isDigit(c) || Character.isWhitespace(c);
                        if ( ! allow ) {
                            break;
                        }
                    }
                    e.doit = allow;
                }

            }
        });
        text.setSize(200, 20);
        shell.pack();
        shell.open();
        while (!shell.isDisposed()) {
            if (!display.readAndDispatch())
                display.sleep();
        }
        display.dispose();
    }
}

在文本控件上设置VerifyListener ,检查插入的文本是否仅包含数字。

这比使用密钥代码的解决方案更好。 由于它适用于输入,因此不会阻止粘贴和删除等操作。

例:

text.addVerifyListener(new VerifyListener() {
    @Override
    public void verifyText(VerifyEvent e) {
            for (int i = 0; i < e.text.length(); i++) {
                if (!Character.isDigit(e.text.charAt(i))) {
                    e.doit = false;
                    return;
                }
            }
        }
    });

在Swing中你有一个JFormattedTextField就可以做到这一点。 但我不认为SWT中有类似的东西。 您应该能够进行一些更改以包含JFormattedTextField,如果这真的是您需要的。 另一种选择是在输入后验证用户的输入。

2 防止在文本字段中输入某些字符

我试图只允许在文本框中输入以下字符: A到Z大写字母,小写字母Ñ和ñ和空格。 Onkeyup上运行以下功能: 我所做的事情不好的是,该字段仍然接受以下特殊字符: 有人对此有智慧吗? ...

3 如何防止用户在文本字段(字符类型)中输入特殊字符(例如键盘上不可见的符号)?

如何防止用户在AS400的文本字段(字符类型)中输入特殊字符(例如键盘上不可见的符号)? 显然,在大多数情况下,iseries / as400接受它并将其保存到文件中并没有问题,但是有时,当数据在下游报告系统中处理时,它会由于系统错误而被拒绝。 有没有办法防止进入点本身? 例如:在“客 ...

4 防止用户在文本字段中输入仅大写的值

我有一个预订系统,客户的姓名必须输入到一个简单的 html5 输入字段(输入文本)。 一些预订者不断以大写字符输入姓名。 有没有办法(可能通过Javascript)将大小写更改为正常的标题大小写(第一个字符和空格大写后的字符,后面的字符小写)? 别急,这不是那么容易... 复杂性:如果这个世界上没 ...

5 防止用户在需要验证的文本字段中输入null

有没有一种方法可以告诉淘汰赛,如果用户在必需的文本字段中输入null,它将是无效的。 这只会迫使用户键入空格以外的任何内容。 编辑: 我已经尝试过了,但没有成功: 例外: ...

8 SWT中的白色,只读文本字段

我正试图在SWT窗口中制作一个大白框来显示信息。 我希望这看起来与标签不同,但我也希望它不可编辑。 到目前为止,我只能创建一个带有灰色背面的上午可编辑文本框(顶部)。 我的目标是使用List (在Text )获得的外观。 ( List的问题是它只能在每个列表项的一行显示文本。我 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM