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

时间:2015-12-21 15:20:01

标签: java

我真的试图寻找这个问题的解决方案,但我似乎无法做到正确。我有一个正在处理的应用程序,我想打印出带有行的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。 有什么想法怎么办?非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

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

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