KeyPress イベントで 2 つの JPassWordFields を一致させようとしています。最初の JPassWordField にパスワードを入力すると、すべての文字の値がすぐに返されます (確認のために char[] 出力を出力しました)が、同じパスワードまたは任意のパスワードを入力すると、これが起こります:
最初のキー ストロークで、空の char 配列を返します (たとえば、「e」を押すと [] が返されます)。
2 番目のキー ストロークで、1 番目のキー ストロークで押された文字の値を返します (たとえば、「y」を押すと、前の文字の「e」が返され、出力は [e] になります)。
3 回目のキー ストロークで、2 回目のキー ストロークで押された文字の値を返します (たとえば、「s」を押すと、前の文字である「y」が返され、出力は [e,y] になります)。
等々 ....
したがって、最初の JPassWordField でパスワードとして「eysa」を入力したとします。2 番目の JPassWordField で「eysaa」と入力して、両方の char[] 出力を一致させる必要があります。
2 番目のパスワードを「eysa」にバックスペースしても、一致ステータスは true のままです -_-
助けてください、私の頭は、私が使用しているキープレスイベントでスロションを探して回転しています:
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");
}
}