将数组列表项显示为单独的JLabels



我正在制作一个订单系统应用程序。我希望用户单击一个按钮,将他们单击的按钮的项目添加到arraylist,并在屏幕底部显示arraylist

我目前可以将该项目添加到列表中,但无法将每个项目显示为自己的JLabel。那么,我该怎么做,或者它是如何正确地完成的。

简短的例子。

菜单面板.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

将数组列表中的每个项放入其自己的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
 }

这将为您提供一个JLabels的ArrayList,其中包含您订单ArrayList中的每个项目。可能有更好的方法将其集成到您的代码中,但这是一个示例(例如,在集成它时,您可以填充订单ArrayList,将其填充为JLabels,而不是YMMV(。

空指针异常由于没有正确使用add语法,您将得到一个Null指针异常。应该是:

instanceOfArrayList.add(Object(

最新更新