HashMap仅打印出JTable行中的最后一个值



我真的试着寻找这个问题的解决方案,但似乎做不好。我有一个正在开发的应用程序,我想用行打印出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");
            }
        }
    });

Model是我的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。有什么想法吗?真的很感谢你的帮助!

我必须修复一个方法来增加我添加到Customer的每个订单的密钥,看起来我用最后一个覆盖了前一个。

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

最新更新