0

我正在尝试仅使用数字字符 (0-9) 向 4 个 JTextField 添加验证。我对一个 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,而无需复制和粘贴每个代码?

4

3 回答 3

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; 
    }   
}
于 2012-03-07T13:18:11.753 回答
2
于 2012-03-07T13:22:57.423 回答
1

好吧,您可以将匿名类转换为真实类,然后在任何地方实例化该类。现在,你也可以看看JFormattedTextField

于 2012-03-07T13:19:33.290 回答