2012-03-07 104 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