2015-03-23 5 views
0

showPopUpPassword работает нормально, когда я вводил неверный пароль в первый раз, но когда я повторяю его во второй раз или более. он по-прежнему всплывает после JOptionPane.showMessageDialog (null, «неправильный пароль»);Метод popUp повторяется, когда я повторяю процесс Дважды или более

table.addMouseListener(new MouseAdapter() { 
     public void mousePressed(MouseEvent e) { 
       if (e.getButton() == MouseEvent.BUTTON3) 
       { 
        popup.show(table, e.getX(), e.getY()); 
        EditProfile.addActionListener(new ActionListener() {    
         public void actionPerformed(ActionEvent e) { 

          int row = table.getSelectedRow(); 
          String name = (String) table.getModel().getValueAt(row, 0); 

          if (!namelist.contains(name)) { 

           String pass = ctr.getNamebyPassword(name, password);  // get password on database 
           password = showPopUpPassword();        // get the user input password 

           if(!pass.equals(password)) { 
            JOptionPane.showMessageDialog(null, "incorrect password"); 

           }else if (pass.equals(password)){ 
            edit = new editProfileFrame(ctr.getData(name), ctr.getAccount(name)); 
            namelist.add(name); 
           } 

          }else { 
           JOptionPane.showConfirmDialog(null, "Cannot Duplicate Profile Window"); 
           } 



         } 
        }); 
       } 
     } 
    }); 
+1

для лучшей помощи скорее отправить SSCCE/MCVE, короткий, выполнимый, компилируемый, с жестким кодом для JTable/XxxTableModel в локальной переменной – mKorbel

+0

Не использовать 'if (e.getButton() == MouseEvent.BUTTON3)'. Люди могут не знать, что такое кнопка3. Вместо этого вы можете использовать: 'if (SwingUtilities.isRightMouseButton (e)'. – camickr

ответ

0

Попробуйте это,

while(true){ 
    password = showPopUpPassword();       
    if(!pass.equals(password)) 
     JOptionPane.showMessageDialog(null, "incorrect password"); 
    else 
     break; 
} 

edit = new editProfileFrame(ctr.getData(name), ctr.getAccount(name)); 
namelist.add(name); 
+0

endles loop не является хорошим предложением ни на одном из языков программирования, читайте учебник Oracle, как использовать JDialog, часть о JOptionPane – mKorbel

0

для кого-то может прочитать эту проблему .. Проблема, почему JOptionPane повторяется, потому что кнопка EditProfile находится внутри MousePressedEvent.

Просто возьмите кнопку за пределами MousePressedEvent.