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