2014-09-14 3 views
0

Я работаю над проектом для своего класса программирования компьютера и столкнулся с странной ошибкой, которую я не могу исправить. При добавлении новых учетных записей, а затем их удалении, кажется, добавляется больше к переменной count, чем необходимо, и кажется, что она петля внутри метода actionlisteners (), который заставляет его «хранить значения» и создавать больше учетных записей вместо одного , Я провел некоторое тестирование, и ошибка произошла только после того, как вы удалили и добавили учетную запись один раз. Подсчет Значение будет идти от 1 до 3, когда есть только одна область, которую он увеличивает. Как я могу это исправить?Устранение неполадок с подсчетом Java/ошибка

public static void actionlisteners(){ 
    b1.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent arg0) { 
      sel1 = cb1.getSelectedItem(); 
      sel2 = cb2.getSelectedItem(); 
      if(sel1.toString().equals("-----BankAccounts-----") && !sel2.toString().equals("Add Account")){ 
       l1.setText("Please select an account."); 
       actionlisteners(); 
      } 
      if(sel2.toString().equals("Add Account")){ 
       if(count != 20){ 
        count++; 
        cb1.addItem(t1.getText().toString()); 
        t1.setText(""); 
        System.out.println(count); 
       } 
       else{ 
        l1.setText("You can create a maximum of 20 accounts."); 
       } 
      } 
      if(sel2.toString().equals("Delete Account")){ 
       if(count > 0 && !sel1.toString().equals("-----BankAccounts-----")){ 
       count--; 
       if(!sel1.toString().equals("-----BankAccounts-----")){ 
       cb1.removeItem(sel1.toString()); 
       System.out.println(count); 
       } 
       } 
       if(count == 0){ 
        l1.setText("There are no more accounts to remove!"); 
       } 
      } 
     } 
    }); 
    cb2.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent arg0) { 
      sel2 = cb2.getSelectedItem(); 
      if(sel2.toString().equals("Add Account")){ 
       l1.setText("You are adding a new account."); 
      } 
      if(sel2.toString().equals("Deposit Money")){ 
       l1.setText("You are depositing money."); 
      } 
      if(sel2.toString().equals("Withdraw Money")){ 
       l1.setText("You are withdrawing money."); 
      } 
      if(sel2.toString().equals("Delete Account")){ 
       l1.setText("You are deleting an account."); 
      } 
     } 
    }); 
} 

Редактировать: Спасибо за помощь! Не знаю, как я пропустил этот дополнительный вызов actionlisteners();

ответ

0

Звонок actionlisteners(); внутри оператора if(sel1.toString().equals("-----BankAccounts-----") && ... регистрирует другой прослушиватель действий для компонента b1. Это означает, что если вы нажмете кнопку b1 (я думаю, это кнопка), действие Add или Delete будет выполнено дважды. Убедитесь, что вы создали только один прослушиватель действий.

Смежные вопросы