2013-07-16 183 views
0

我正在構建一個簡單的小程序,並在我的小程序中,我有一個組合框和一個下拉列表。當一個選項被選中,並且點擊一個按鈕「添加」時,選擇將被傳遞給一個創建對象的方法。唯一的問題是,當我點擊按鈕時,它會添加對象,但是當我嘗試添加另一個時,它將刪除前一個,並將新對象設置爲與新對象相同的屬性。所以實質上是重新添加選擇。爲什麼按鈕被點擊時這個方法會被調用兩次?

btnAdd.addActionListener(new ActionListener() { 

      public void actionPerformed(ActionEvent e) { 

       addTooObj(comboBox.getSelectedItem().toString(), lblStatusLabel); 
       System.out.println(comboBox.getSelectedIndex()); 

      } 

     }); 



private void addToobj(String num,JLabel j){ 
     System.out.println(num); 
     Object objToBeAdded = null; 
     long objNumber = Long.parseLong(num); 
     int quan = 0; 
     if (objNumber == 12354589621l) { 
      objToBeAdded = new Item(objNumber, 2.00, quan); 
     } else if (objNumber == 21) { 
      objToBeAdded = new Item(objNumber, 1.50, quan); 
     } else if (objNumber == 12) { 
      objToBeAdded = new Item(objNumber, 5.20, quan); 
     } else { 
      System.out.println("error"); 
     } 

     oldObj.add(objToBeAdded); 
    } 
+1

爲了更好地幫助更快,發佈[SSCCE(http://sscce.org) - 這甚至不會編譯'私人無效addToobj(NUM){' - 所以我們應該怎麼知道你實際上顯示導致您的問題的代碼。 – jlordo

+0

仍然不會編譯,你用兩個參數調用方法,它只是期待一個。 – jlordo

+0

opps。抱歉。這是我的錯字。它有很多代碼,我不想複製和粘貼所有內容。 – user2351234

回答

0

在您actionPerformed方法,你可以得到的動作指令,並回顧一下它的行動是被解僱了,然後只叫你的方法,如果行動是你想要的操作。

public void actionPerformed(ActionEvent e) { 
    String action = e.getActionCommand(); 
    System.out.println("The action was: " + action); 
    if(action.equals("What ever action you want")){ 
     addTooObj(comboBox.getSelectedItem().toString(), lblStatusLabel); 
     System.out.println(comboBox.getSelectedIndex()); 
    } 

} 
+0

這似乎沒有幫助。 – user2351234

+0

對,重新閱讀我看到它不會有的問題後。什麼是oldObj? –

相關問題