Java中 关于SWT中Text文本框的输入问题

一栗虾 发布于 2016/07/17 17:47
阅读 1K+
收藏 0

先贴代码:

Text showText = new Text(showArea, SWT.NONE | SWT.RIGHT_TO_LEFT
                | SWT.WRAP);
    showText.addVerifyListener(new VerifyListener() {
            @Override
            public void verifyText(VerifyEvent e) {
                // TODO Auto-generated method stub

                    boolean b = "0123456789.+-*%^√".indexOf(e.character) >= 0;
                    e.doit = b; // doit属性如果为true,则字符允许输入,反之不允许
                return;
            }
        });

用了这个之后就只有 0123456789.+-*%^√可输入了
可我还想要Backspace的退格功能,我该怎么做?

先说一下这个代码的用途吧,我是想要做一个计算器
那么还有一个问题就是小数点** .**只能出现一次
我设了一个静态布尔量来检测当前是否有小数点 .

public static boolean spot = false;

再看代码:

public static String Back(String s) {
// back 消除一个字符
if (s.length() > 0) {
if (s.indexOf(".") == 0)
Start.spot = false;
return s.substring(0, s.length() - 1);
} else {
Start.spot = true;
return "0";
}
}

这是在另一个类中定义的一个方法来实现界面上退格按钮的功能,之前我在
showText.addVerifyListener(new VerifyListener() {
    @Override
    public void verifyText(VerifyEvent e) {
    // TODO Auto-generated method stub

    boolean b = "0123456789.+-*%^√".indexOf(e.character) >= 0;
                e.doit = b; // doit属性如果为true,则字符允许输入,反之不允许
            return;
        }
});

中也加入了对小数点的检测来决定e.doit的值,可是事实上会出现**0.2.23.**这种情况,但是不会连着几个点一起输入进去

还有一个问题,Back函数在文本框字符大于三个后便不起作用了,不知为何
贴上Back按钮的代码

keyButtons[15].addSelectionListener(new SelectionAdapter() {
// "Back"
//Calculator 是我定义的一个类,专门用来盛放计算器面板上各个按钮的功能
    public void widgetSelected(SelectionEvent e) {
        if (showText.getCharCount() > 0)
            showText.setText(Calculator.Back(showText.getText()));
        showText.setSelection(showText.getCharCount());
        shell.setFocus();
    }
});

所以目前有三个关于这个Text的问题
1. 怎样才能使键盘上的Back键起作用
2.怎样控制小数点只能出现一次
3.Back函数是怎么了...(因为文本框里有两个字符时它还是可用的)
求解
加载中
返回顶部
顶部