次のように、LostFocus イベントを使用して 2 つのテキストフィールドを検証しています。
textRegNo.addFocusListener(new FocusListener() {
@Override
public void focusLost(FocusEvent arg0) {
// TODO Auto-generated method stub
regNo1=textRegNo.getText();
Pattern pattern1 = Pattern.compile("^[A-Z]{2}[ -][0-9]{1,2}(?: [A-Z])?(?: [A-Z]*)? [0-9]{4}$");
Matcher matcher1 = pattern1.matcher(regNo1);
if (!matcher1.find()){
JOptionPane.showMessageDialog(null, "Invalid Vehicle No!!!\n Vehicle no should be of the form MH 03 KS 2131!!");
}
}
@Override
public void focusGained(FocusEvent arg0) {
// TODO Auto-generated method stub
};
});
textMobNo.addFocusListener(new FocusListener() {
@Override
public void focusLost(FocusEvent arg0) {
// TODO Auto-generated method stub
mobNo1=textMobNo.getText();
Pattern pattern2 = Pattern.compile("^[789]\\d{9}$");
Matcher matcher2 = pattern2.matcher(mobNo1);
System.out.println("'"+mobNo1+"'");
if (!matcher2.find()){
JOptionPane.showMessageDialog(null, "Phone no must be a 10 digit number!!");
}
}
@Override
public void focusGained(FocusEvent arg0) {
// TODO Auto-generated method stub
};
});
私の問題は、最初のテキストフィールドにフォーカスを失い、そのフォーカスを2番目のテキストフィールドに移動すると、両方のフィールドにエラーメッセージが出力されることです(両方のlostfocusイベントの下のIFブロック内のメッセージ)。最初のテキストフィールドに間違った入力をしてフォーカスを移動すると2 番目のフィールドには、1 番目のテキスト フィールドのエラー メッセージのみを出力する必要があります。しかし、両方の印刷エラーです。
1 番目のテキストフィールドは textRegNo です 2 番目のテキストフィールドは textMobNo です