我正在制作订购系统应用程序。我希望用户点击按钮,将他们点击的按钮项添加到arraylist
,然后在屏幕底部显示arraylist
。
我目前可以将该项目添加到列表中,但无法显示每个项目,因为它是自己的JLabel
。那么,我该怎么做,或者它是如何正确完成的。
缩短的例子。
MenuPanel.Java
b1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
OrderPanel.getOrder().add("bread");
meatMenu(); //Changes panel display (not important)
System.out.println(OrderPanel.getOrder());
}
});
OrderPanel.Java
Map<String, List<String>> map = new HashMap<String, List<String>>();
order = new ArrayList<String>();
map.put("order", order);
System.out.println(order);
l1 = new JLabel();
l1.setFont(l1.getFont().deriveFont(FONT_POINTS));
l1.add(order.toString()); //Error on add
add(l1);
我可以System.out.print
列表中的项目没有问题,但无法在JLabel中显示它们。 :/
编辑:NullPointerException问题
public JLabel holder;
public static List<String> order;
order = new ArrayList<String>();
ArrayList<JLabel> labels = new ArrayList<JLabel>();
for (int i = 0; i < order.size(); i++) {
holder = new JLabel();
holder.setText(order.get(i).toString());
labels.add(holder);
}
System.out.print(holder); // Works
add(holder); // Doesn't work - throws exception
答案 0 :(得分:3)
将数组列表中的每个项目放入其自己的JLabel中的for循环看起来像:
ArrayList<JLabel> labels = new ArrayList<JLabel>(); //not 100% sure on this syntax off the top of my head
JLabel holder;
for (int i = 0; i < order.size(); i++){
holder = new JLabel();
holder.setText(order.get(i)) // assuming order's objects are Strings, otherwise .toString() on there somewhere
labels.add(holder); //adds holder to the ArrayList of JLabels
}
这将为您提供一个JLabel的ArrayList,其中包含您的订单ArrayList中的每个项目。可能有更好的方法将它集成到您的代码中,但这是一个示例(例如,将它集成在您填充订单ArrayList的位置,将它们填充为JLabel,而不是YMMV)。
NULL POINTER EXCEPTION 您正在获取Null指针异常,因为您没有正确使用添加语法。它应该是:
instanceOfArrayList.add(对象)