Каков наилучший способ проверки данных в JTextField? - PullRequest
1 голос
/ 06 сентября 2010

Я попробовал это, но JTextField продолжает показывать последний введенный ключ. Что я не так делаю? ...

private void codigoKeyTyped(java.awt.event.KeyEvent evt) {
    //codigo is the JTextField
    String s = String.valueOf(evt.getKeyChar());
    try{
        Integer.parseInt(s);
    }catch(Exception e){
        codigo.setText("");    
    }
}

Наконец, я хочу удалить последний символ и оставить целое значение в текстовом поле. Но я думаю, что это будет просто после решения этого. Спасибо!

// ОТВЕТА! * * 1006

Спасибо всем за ответ на мой вопрос. Наконец я сделал это

private void codigoKeyTyped(java.awt.event.KeyEvent evt) {

    char c = evt.getKeyChar();

    if (! Character.isDigit(c)) {
        evt.consume();            
    }
}

Ответы [ 3 ]

2 голосов
/ 06 сентября 2010

Я бы предложил использовать DocumentListener intead. См. этот пример для примера кода.

1 голос
/ 06 сентября 2010

Использование ключевого слушателя (или даже слушателя документа) не подходит для этой задачи.Возможно, модель слушателя не подходит для входных событий.Ожидаете ли вы, что ваш код слушателя будет выполняться до или после кода слушателя, который вставляет значение ключа?Как вы собираетесь обрабатывать нажатия клавиш копирования и вставки, а также перетаскивание мышью с помощью мыши?

Способ справиться с этим с помощью DocumentFilter.Использование этого продемонстрировано в моем простом примере блога Swing .

0 голосов
/ 06 сентября 2010

Вы должны прочитать свой JTextField, как только пользователь будет готов что-то сделать ... например, нажав кнопку «ОК».Создайте такую ​​кнопку и поместите следующий код в метод ActionPerformed:

String idtxt = codigo.getText();

int id = Integer.parseInt(idtxt);

В настоящее время ваше чтение JTextField инициируется KeyEvent, а функция evt.getKeyChar () возвращает нажатую клавишу.Это событие, возможно, хорошо для создания "щелкающего" шума, но не будет работать для целых чисел> одной цифры!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...