tangguo

在Java中验证整数值的问题

java

嗨,我正在使用Eclipse Rcp,我需要验证仅接受我使用代码的整数值的文本框

 txtCapacity.addKeyListener(new KeyAdapter() {
              public void keyPressed(KeyEvent EVT) {                     

                    if((EVT.character>='0' && EVT.character<='9')){
                          txtCapacity.setEditable(true);                    
                           txtCapacity.setEditable(true);

                      } else {
                          txtCapacity.setEditable(false);
                             System.out.println("enter only the numeric number");                                  
                      }
              }
      });

它可以验证,但是与此有关的问题是我无法使用Backspace键删除数字。还请告诉我验证小数的想法。提前致谢


阅读 305

收藏
2020-12-03

共2个答案

小编典典

使用侦听器时,您可以清空文本字段,而不是使其不可编辑。您可以执行以下操作,该代码段基于您的代码。

txtCapacity.addKeyListener(new KeyAdapter() {
        public void keyReleased(KeyEvent EVT) {                     
             if(!(EVT.character>='0' && EVT.character<='9')){
                    txtCapabity.setText(""); 
             }
        }
});

如果您使用,则更好JFormattedTextField。我不确定您是否在SWT中拥有它,即使您不尝试寻找类似的东西。

2020-12-03
小编典典

不要使用KeyListener!使用aVerifyListener代替,因为这将处理粘贴,退格,替换.....

例如

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 {
      new BigDecimal(newS);
      // value is decimal
    } catch (final NumberFormatException numberFormatException) {
      // value is not decimal
      e.doit = false;
    }
  }
});
2020-12-03