2011-06-29 27 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