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

标签 java swt

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

我如何在 SWT 中做到这一点?

最佳答案

使用 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();
    }
}

关于java - 防止用户在 SWT 的文本字段中输入字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4346002/

相关文章:

java - 如何从 Eclipse RCP 中的现有透视图获取新窗口

java - SWT - PrintDialog 打印表/表查看器的内容

java - Android LinearLayout 在 java 代码中设置 layout_gravity

java - 当一个列表不稳定时如何比较两个列表的顺序

java - CXF 客户端代理 getClient "not a proxy instance"

java - 更改输入对象时 TableViewer 重绘缓慢

Java SWT 按钮图像不刷新

java - 如何使用 Spring 的 PayloadValidatingInterceptor 验证多个 XSD 模式

java - GlassFish + MySQL + XHTML + Java Beans + UTF-8 问题

java - 如何设置文件对话框的最小/最大大小? - SWT - Java