2012-09-05 67 views

回答

2
javax.swing.InputVerifier 

適用於大多數簡單的任務。

這裏有一個我擊倒了一天:

public class TexFieldValidator extends InputVerifier { 

    String regex; 
    String errorMsg; 
    JDialog popup; 

    public TexFieldValidator(String regex, String errorMsg) { 
     this.regex = regex; 
     this.errorMsg = errorMsg; 
    } 

    @Override 
    public boolean verify(JComponent input) { 
     boolean verified = false; 
     String text = ((JTextField) input).getText(); 
     if (text.matches(regex)) { 
     input.setBackground(Color.WHITE); 
     if (popup != null) { 
      popup.dispose(); 
      popup = null; 
     } 
     verified = true; 
     } else { 
     if (popup == null) { 
      popup = new JDialog((Window) input.getTopLevelAncestor()); 
      input.setBackground(Color.PINK); 
      popup.setSize(0, 0); 
      popup.setLocationRelativeTo(input); 
      Point point = popup.getLocation(); 
      Dimension dim = input.getSize(); 
      popup.setLocation(point.x - (int) dim.getWidth()/2, point.y + (int) dim.getHeight()/2); 
      popup.getContentPane().add(new JLabel(errorMsg)); 
      popup.setUndecorated(true); 
      popup.setFocusableWindowState(false); 
      popup.getContentPane().setBackground(Color.PINK); 
      popup.pack(); 
     } 
     popup.setVisible(true); 
     } 

     return verified; 
    } 
} 

被盜從here。使用

例子:

iDTextField.setInputVerifier(new TexFieldValidator("[a-zA-Z0-9]{3}", "ID must be 3 alphanumerics."));