一栗虾 2016-07-17 08:34 采纳率: 0%
浏览 2937
已结题

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

先贴代码:

    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函数是怎么了...(因为文本框里有两个字符时它还是可用的)
求解答

  • 写回答

3条回答 默认 最新

  • qianao 2016-07-17 10:18
    关注

    "0123456789.+-*%^√" 加入"\b"试试

    评论

报告相同问题?

悬赏问题

  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题