嗨,我正在使用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键删除数字。还请告诉我验证小数的想法。提前致谢
使用侦听器时,您可以清空文本字段,而不是使其不可编辑。您可以执行以下操作,该代码段基于您的代码。
txtCapacity.addKeyListener(new KeyAdapter() { public void keyReleased(KeyEvent EVT) { if(!(EVT.character>='0' && EVT.character<='9')){ txtCapabity.setText(""); } } });
如果您使用,则更好JFormattedTextField。我不确定您是否在SWT中拥有它,即使您不尝试寻找类似的东西。
JFormattedTextField
不要使用KeyListener!使用aVerifyListener代替,因为这将处理粘贴,退格,替换.....
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; } } });