2013-04-18 33 views
0

我正在製作一個包含代表遊戲地圖的圖標的網格,並且此網格有時需要重繪。 我正在努力從基礎知識。 下面是一些代碼,我得到了工作基本Java Swing - 在運行時用圖標添加JLabels

int i = 1; 
    while (i < 50) { 
      pnlMap.add(new JLabel(String.valueOf(i))); 
     i += 1; 
    } 

現在我想的JLabel顯示圖標,但我想不出對參數語法上pnl.add()

我想它像

pnlMap.add(new JLabel("").setIcon(new ImageIcon(ClientGUI.class .getResource("/resources/wall.jpg"))));

正如你所猜測的,這是行不通的。錯誤:The method add(Component) in the type Container is not applicable for the arguments (void)

如何獲取上面的代碼添加帶圖標的JLabel?

(在一個單獨的說明,這是什麼樣的對象構造的叫,你只是「添加新的JLabel」動態而不是之前初始化呢?)

回答

2

不同構造的JLabelsetIcon功能沒有按不會退回任何東西(或返回void)。這意味着你的代碼看起來有點像這樣:

pnlMap.add(void); 

這就是爲什麼錯誤被拋出的原因。

因此,只需稍微修改一下代碼即可使循環正常工作。

int i = 1; 
while (i < 50) { 
    JLabel label = new JLabel(String.valueOf(i)); 
    label.setIcon(new ImageIcon(ClientGUI.class .getResource("/resources/wall.jpg"))); 
    pnlMap.add(label); 
    i += 1; 
} 

編輯: 在回答你關於new JLabel()建設在你的代碼的問題。令人驚訝的是,它被稱爲動態對象構造。

+0

阿哈誰會想到它會被直截了當地命名!謝謝,這一直奏效。 – njl

+0

我很高興我可以幫助:)你能接受這個答案嗎? – Kezz101