在swt文本中验证

Rab*_*bin 6 swt text eclipse-rcp

我想在文本框中验证输入的数字.

我希望用户在最大值和最小值之间的框中仅输入整数,小数.

我怎样才能确定这一点?

谢谢.

Ton*_*sen 11

使用a VerifyListener将处理粘贴,退格,替换.....

例如

text.addVerifyListener(new VerifyListener() {
  @Override
  public void verifyText(VerifyEvent e) {
    final String oldS = text.getText();
    final String newS = oldS.substring(0, e.start) + e.text + oldS.substring(e.end);

    try {
      BigDecimal bd = new BigDecimal(newS);
      // value is decimal
      // Test value range
    } catch (final NumberFormatException numberFormatException) {
      // value is not decimal
      e.doit = false;
    }
  }
});
Run Code Online (Sandbox Code Playgroud)


Nic*_*son 3

您可以向文本控件注册一个ModifyListener 并使用它来验证数字。

    txt.addModifyListener(new ModifyListener() {

        @Override
        public void modifyText(ModifyEvent event) {
            String txt = ((Text) event.getSource()).getText();
            try {
                int num = Integer.parseInt(txt);
                // Checks on num
            } catch (NumberFormatException e) {
                // Show error
            }
        }
    });
Run Code Online (Sandbox Code Playgroud)

您还可以使用 addVerifyListener 来阻止输入某些字符。在传递到该方法的事件中,有一个“doit”字段。如果将其设置为 false,则会阻止当前编辑。