求教java中JLabel显示的问题

我在一个方法中定义了一个空的JPanel(布局为null)上添加了很多JLabel,当我每次点击JLabel后,我想实现这些JLabel的减少(或者增加)(通过重新调用这个方法来实现重新显示)。问题来了:在JLabel减少,JPanel重新显示的时候,之前的JLabel还会在上边,请问如何在java程序中彻底删除JLabel
public void updatePanel()
{
//初始化JPanel n;
getContentPane().validate();
getContentPane().add(n); ;
for(int i=0;i<7;i++)
{
//front 和frontEnd 是会变化的
if(//关于front的条件){
// 初始化JLabel jl;
jl.addMouseListener(new MouseAdapter() {
public void mouseClicked(final MouseEvent arg0) { dealWith()//dealwith()中会调用这个函数 updatePanel()
}
});
n.validate();
n.add(jl);
}
原码太多,上面的是关键代码

第1个回答  2011-11-14
你可以尝试着调用validate方法追问

好像没什么用啊 ,我试了一下,问题没解决,有的时候虽然没显示,但是我给这些JLabel加上了鼠标监听,点击那个没有label区域(就是之前有label的那片区域)还是有事件。。。

追答

代码贴上来瞅瞅..

追问

看问题补充。。麻烦了

追答

n.add(jl);
n.validate();
换下试试

追问

额。还是没用啊,事件监听还在那,并且方法updatePanel()方法调用的次数多了后,每次都会重新初始化一个面板JPanel,是不是这些新的面板都会覆盖到以前的面板上面?

相似回答