0

次のように、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 です

4

1 に答える 1