2014-04-29 15 views
-3

我在訂購系統應用程序。我希望用戶點擊一個按鈕,將他們點擊的按鈕的項目添加到arraylist,並在屏幕底部顯示arraylist將Arraylist項目顯示爲單獨的JLabels

我目前可以將該項目添加到列表中,但無法顯示每個項目,因爲它自己的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

如果你想在ArrayList的每個項目是其自己的按鈕,你想使每個循環,可能使用的JLabel –

+0

我希望每個數組在列表中的項目是它自己的'jlabel'。我將如何實現for循環來執行此操作? – Michael

+0

請參閱下面的答案。這只是一個例子,並不一定是最好的事情 –

回答

3

for循環把每個項目在數組列表到自己的JLabel看起來是這樣的:

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 
} 

這給你一個JList的ArrayList,其中一個來自訂單ArrayList中的每個項目。有可能有更好的方法將它集成到你的代碼中,但這是一個例子(例如,將它集成到填充你的訂單ArrayList的地方,以將它們填充爲JLabel,而不是YMMV)。

NULL指針異常 由於沒有正確使用添加語法,您將收到空指針異常。它應該是:

instanceOfArrayList.add(對象)

+0

你也可以使用for-each。對於(字符串s:順序){...} – pL4Gu33

+0

@ pL4Gu33正確,但我無法回想起我的頭頂上的語法 –

+0

我明白這個例子,它似乎工作,但現在我可以' t'添加(持有人)'我的代碼。它繼續拋出nullpointerexception,但'System.out.print(holder)'完美地工作。有任何想法嗎?謝謝你的方式!在上例中, – Michael

相關問題