2015-12-21 80 views
-2

我真的試過尋找解決這個問題的方法,但我似乎無法正確理解。我有一個正在開發的應用程序,我想用行打印出JTable中的所有客戶訂單。所以如果一個客戶有三個訂單,我希望它在單獨的行上顯示每個訂單。HashMap只打印出JTable行中的最後一個值

有了這個代碼(下一個塊)我得到它的工作,但它只是打印出最後一個值。所以,如果我有3階連接到一個客戶,然後加訂貨4,那隻能說明訂購4

JButton btnHämtaKund = new JButton("Hämta"); 
    btnHämtaKund.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 
      String searchTerm = sökrutaKund.getText(); 
      Customer c = Controller.findCustomer(searchTerm); 
      String sum = ""; 
      if (c != null) { 
       if (c.getOrders() != null) { 
        for (Order tmp : c.getOrders().values()) { 
         String date = tmp.getDate(); 
         String price = Double.toString(tmp.getPrice()); 
         String rfd = ""; 
         if (tmp.getRdyForDelivery() == true) { 
          rfd = "Ready for delivery"; 
         } else if (tmp.getRdyForDelivery() == false) { 
          rfd = "Processing"; 
         } 
         model.addRow(new String[] {date, price, rfd}); 
        } 
        txtfieldTestKund.setText(sum); 
       } else { 
        txtfieldTestKund.setText("c.getOrders() == null"); 
       } 
      } else { 
       txtfieldTestKund.setText("c == null"); 
      } 
     } 
    }); 

型號是我DefaultModelTable。

我也試圖與一個for循環的情況下,這樣我覆蓋我的最後一排的所有時間:

    for (int i = 0; i < c.getOrders().size(); i++) { 
         String date = c.getOrders().get(i).getDate(); 
         String price = Double.toString(c.getOrders().get(i).getPrice()); 
         String rfd = ""; 
         if (c.getOrders().get(i).getRdyForDelivery() == true) { 
          rfd = "Ready for delivery"; 
         } else if (c.getOrders().get(i).getRdyForDelivery() == false) { 
          rfd = "Processing"; 
         } 
         Object row[] = {date, price, rfd}; 
         model.addRow(row); 
         } 

但只是給了一個NullPointerException。 任何想法該怎麼辦?真的非常感謝您的幫助!

+0

哪行拋出NullPointerException?你可以包含堆棧跟蹤嗎? –

+0

nullpointer在String date = c.getOrders()。get(i).getDate();如果我刪除它,它會被引發到下一行,它是String price = Double.toString(c.getOrders()。get(i).getPrice()); @ XiaweiZhang –

+0

嗯,如果我沒有錯getOrders()返回HashMap,你有索引作爲HashMap的關鍵? –

回答

0

我不得不修復一個方法,以增加每個添加到客戶的訂單的密鑰,看起來像我用最後一個覆蓋上一個。

private int counter = 0; 
public void add(Order o) { 
    counter += 1; 
    String newCounter = Integer.toString(counter); 
    this.orders.put(newCounter, o); 
}