将文本字段验证添加到多个文本字段

时间:2012-03-07 13:13:04

标签: java swing validation jtextfield inputverifier

我正在尝试仅使用数字字符(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();
            }
        }
    });

是否有更有效的方法将此验证添加到其余的JTextField而无需复制和粘贴每个代码?

3 个答案:

答案 0 :(得分: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 :(得分:2)

答案 2 :(得分:1)

您可以将您的匿名类转换为真正的类,然后在任何地方实例化该类。现在,您还可以查看JFormattedTextField