Добавление проверки текстового поля в несколько текстовых полей - PullRequest
0 голосов
/ 07 марта 2012

Я пытаюсь добавить проверку к 4 JTextFields, используя только числовые символы (0-9). Код, который у меня есть для одного 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 без копирования и вставки кода для каждого?

Ответы [ 3 ]

3 голосов
/ 07 марта 2012

Вы можете использовать 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; 
    }   
}
2 голосов
/ 07 марта 2012
1 голос
/ 07 марта 2012

Ну, вы можете преобразовать свой анонимный класс в реальный класс, а затем создать экземпляр этого класса везде. Теперь вы также можете взглянуть на JFormattedTextField

...