【问题标题】:Java count troubleshooting/bugJava 计数故障排除/错误
【发布时间】:2014-09-14 17:43:18
【问题描述】:

我正在为我的计算机编程课程做一个项目,但遇到了一个我似乎无法修复的奇怪错误。添加新帐户然后删除它们时,它似乎向变量 count 添加了比需要更多的东西,并且似乎在 actionlisteners() 方法中循环,导致它“存储价值观”并创建更多帐户,而不仅仅是一个帐户。我已经进行了一些测试,并且该错误仅在您删除并添加一次帐户后才会发生。 Counts 值会在仅增加一个区域时从 1 变为 3。我该如何解决这个问题?

    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() 的额外调用;

【问题讨论】:

    标签: java eclipse debugging user-interface


    【解决方案1】:

    if(sel1.toString().equals("-----BankAccounts-----") && ... 语句内的调用actionlisteners(); 为组件b1 注册另一个动作侦听器。这意味着如果您按下按钮b1(我猜它是一个按钮),则操作Add 或Delete 将执行两次。 确保您只创建一个动作侦听器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-01
      • 1970-01-01
      • 2012-09-02
      • 1970-01-01
      相关资源
      最近更新 更多