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