将Arraylist项显示为单独的JLabel

时间:2014-04-29 16:08:56

标签: java swing arraylist map jlabel

我正在制作订购系统应用程序。我希望用户点击按钮,将他们点击的按钮项添加到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

1 个答案:

答案 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(对象)