сопоставить два JPasswordFields в длине символа ошибки keyPress

Я пытаюсь сопоставить два JPassWordFields в событии KeyPress, когда я набираю пароль в первом JPassWordField, он немедленно возвращает значение каждой буквы (я напечатал вывод char[], чтобы убедиться), но когда я набираю тот же пароль или любой пароль, это бывает:

при первом нажатии клавиши он возвращает пустой массив символов (например, если я нажал «e», он возвращает [])

при 2-м нажатии клавиши он возвращает значение буквы, которая была нажата при 1-м нажатии клавиши (например, если я нажал «y», он возвращает «e» предыдущую букву, и вывод будет [e])

при 3-м нажатии клавиши он возвращает значение буквы, которая была нажата при 2-м нажатии клавиши (например, если я нажал «s», он возвращает «y» предыдущую букву, и вывод будет [e, y])

и так далее ....

поэтому предположим, что я ввел «eysa» в качестве пароля в первом JPassWordField, я должен ввести «eysaa» во втором JPassWordField, чтобы иметь совпадающий вывод char[] обоих

и если я заменю второй пароль на "eysa", статус совпадения останется верным -_-

Помогите, пожалуйста, у меня кружится голова от поиска здесь сообщения о нажатии клавиши, которое я использую:

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

    mat = pfCode.getPassword();
    tmp = pfRCode.getPassword();
    if (!(Arrays.equals(mat,null) || Arrays.equals(tmp,null))) {
        if (!Arrays.equals(tmp, mat)) {
            jLWRC.setForeground(Color.red);
            jLWRC.setText("No Match");
        } else {
            jLWRC.setForeground(Color.green);
            jLWRC.setText("Match, password accepted");
        }
    } else {
        jLWRC.setText("password field Empty");
    }
}                                          

person Eyo666    schedule 26.06.2015    source источник