-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。 任何想法該怎麼辦?真的非常感謝您的幫助!
哪行拋出NullPointerException?你可以包含堆棧跟蹤嗎? –
nullpointer在String date = c.getOrders()。get(i).getDate();如果我刪除它,它會被引發到下一行,它是String price = Double.toString(c.getOrders()。get(i).getPrice()); @ XiaweiZhang –
嗯,如果我沒有錯getOrders()返回HashMap,你有索引作爲HashMap的關鍵? –