带图像的JLabel不会从屏幕上删除

时间:2013-12-13 16:23:59

标签: java swing jlabel imageicon

我有一个Jlabels数组,每个都有一个imageIcon附加到它。附件发生在构造函数外部的一个被调用多次的方法中,在方法结束时我使用了repaint()。

问题是,在一个certin Jlabel被绘制之后,我无法让他“unDraw,即使我将Jlabel(或图像)更改为null。”似乎只是呆在那里。

我试图再次重新绘制,重置背景颜色并重新验证,而非似乎可以完成这项工作。

任何想法?

编辑:我尝试了以下内容(在edt中),它似乎只更改了数组上的最后一个JLable:

for (int j = 0;j<playerCards.length;j++){
    remove(playerCards[j]);
}

2 个答案:

答案 0 :(得分:2)

尝试将UI操作移动到EDT线程中。不在那里制作它们会导致不可预测的结果。

EDT - 事件派遣线程

您应该使用EDT线程对GUI进行更改,以便这是唯一对其进行更改的线程。

    SwingUtilities.invokeLater( 
        new Runnable() {
            public void run() {
                //UI changes here
            }
        }
    );

答案 1 :(得分:-2)

尝试使用

SwingUtilities.updateComponentTreeUI(YOUR_OBJECT_CONTAINER);

其中YOUR_OBJECT_CONTAINER是一个java对象,它扩展了包含要删除的JLabel的JComponent。