2012-03-07 103 views
0

我想将验证添加到仅使用数字字符(0-9)的4个JTextFields。我有一个JTextField中的代码是:将文本字段验证添加到多个文本字段

txtf_xCoord.addKeyListener(new KeyAdapter() 
    { 
     @Override 
     public void keyTyped(KeyEvent keyEvent) 
     { 
      if (txtf_xCoord.getText().length() < 3 && keyEvent.getKeyChar() >= '0' && keyEvent.getKeyChar() <= '9') 
      { 
       // Optional 
       super.keyTyped(keyEvent); 
      } 
      else 
      { 
       // Discard the event 
       keyEvent.consume(); 
      } 
     } 
    }); 

是否有添加此验证,JTextFields将其余没有复制和粘贴每个代码的更有效的方法?

+0

创建一个从JTextField扩展的类,并在其中添加您的侦听器。 和您的程序创建该类的任何地方。 – mehdi 2012-03-07 13:19:29

+1

@medhi - 错误的...你永远不会在Swing中使用KeyListener,特别是不用于验证文本输入 – kleopatra 2012-03-07 14:45:43

+0

@kleopatra ok tnx – mehdi 2012-03-10 06:05:56

回答

3

您可以使用InputVerifier,看看下面的代码:

public class NumericVerifier extends InputVerifier { 
     @Override 
    public boolean verify(JComponent input) { 
      //Check type of the control 
       String text = ""; 

if(input instanceof JTextField) { 
       JTextField tf = (JTextField) input; 
       text = tf.getText().trim(); 
      } 

     boolean matches = text.matches("^\\d+$"); 
     input.setBackground((matches) ? Color.WHITE : Color.RED); 
     return matches; 
    } 
} 
1

那么您可以将匿名类转换为真正的类,然后实例化类无处不在。现在,你也可以看看JFormattedTextField