2011-06-29 30 views
1

添加新的JLabel我有2 JLabels,我添加MouseListener其中之一,它可以刪除其他JLabel並重新繪製它(當我點擊其中一個,另外一個變化Image) 這是我的代碼,但它不起作用,它刪除JLabel,但不要再畫一遍,我該怎麼辦?刪除和MouseListener的

ImageIcon icon_next = new ImageIcon("next-icon.PNG"); 
... 
next = new JLabel(icon_next); 
... 
next.addMouseListener(this); 
player_img_lbl = new JLabel(player_img_ico[0]); 
add(player_img_lbl, FlowLayout.CENTER); 
.... 
@Override 
public void mouseClicked(MouseEvent e) { 
     this.remove(player_img_lbl); 
    JLabel player_img_lbl = new JLabel(player_img_ico[1]); 
    add(player_img_lbl0,FlowLayout.CENTER); 
    repaint(); 
} 

有另一種方式存在,這時候我點擊JLabel之一,它可以改變另一個的Image

+0

player_img_lbl被用作一個場並作爲局部變量。這不是一個好主意。 – Fortega

+0

我的問題是,你爲什麼要刪除標籤? 您可以將可見性設置爲false,或更新偵聽器操作中標籤的內容。對於這些你不必刪除標籤。刪除和添加可能會破壞佈局,這會混淆用戶。 –

回答

4

呼叫重新驗證()重繪()之前

+0

它的工作原理是validate(),tnx –

+0

-1爲零接受用戶的答案,+1 :-) – mKorbel

+0

@StanislavL:請按照MoeinHm向您建議的方式編輯答案。否則,人們快速閱讀而不是在評論部分看不到正確的解決方案。 – user7185318