java吧 关注:1,253,622贴子:12,739,986
  • 2回复贴,共1

【请教】actionPerformed方法在一次单击事件中被多次执行的问题

只看楼主收藏回复

一次单击事件 actionPerformed方法中是个if-else判断语句
在第2次执行后发现else中的语句先执行一遍后 if中的语句又被执行了一次
第三次执行时if中的语句被执行两次
以下是代码:
public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if(e.getSource().equals(Yes)) { if((RunTimeInput.getText().equals("")) || (PriorityInput.getText().equals(""))) { JOptionPane.showMessageDialog(null, "没有输入运行时间或优先级!"); }else { PCBName.add(Name.getText()); PCB.add(new PCB(PCBName.get(PCBIndex),RunTimeInput.getText(),PriorityInput.getText())); System.out.println(Name.getText()); System.out.println(PCBName); System.out.println(PCBIndex); System.out.println(RunTimeInput.getText().equals("")); System.out.println(PriorityInput.getText().equals("")); PCBIndex++; //RunTimeInput.setText(""); //PriorityInput.setText(""); System.out.println(RunTimeInput.getText().equals("")); System.out.println(PriorityInput.getText().equals("")); NewProcessDialog.dispose(); } } }


IP属地:广东1楼2011-08-07 20:33回复
    一楼贴的代码不会重复执行 但是PCBName中添加元素会重复 PCBName是ArrayList类
    如果把注释的//RunTimeInput.setText(""); //PriorityInput.setText("");这两句恢复执行 则会出现我一楼说的问题 但是PCBName添加元素没有问题
    其中print只是为了测试 没有意义
    请吧友帮忙解答


    IP属地:广东2楼2011-08-07 20:36
    回复
      今天我做了个测试小程序 解决了这个问题 虽然原因还没搞清楚 不过放上来和大家分享
      上面程序出的错误在Yes按钮上
      在源代码中 我把这个按钮的定义放在了这个类的外部
      后来将这个按钮放到类内后解决问题 原因还不清楚 只知道每次运行一次似乎产生的JDialog都没有完全消失 虽然代码里有Dispose掉
      算啦 总算是解决了 有心人可以研究下啦


      IP属地:广东3楼2011-08-08 14:00
      回复