【发布时间】:2014-01-01 11:59:59
【问题描述】:
我有一个 Jlabels 数组,每个都有一个 imageIcon 附加到它上面。附件发生在构造函数之外,在一个被多次调用的方法中,在方法结束时我使用 repaint()。
问题是,在绘制了某个 Jlabel 之后,我无法让他“取消绘制,即使我将 Jlabel(或图像)更改为 null。似乎只是留在那里。
我尝试重新绘制,重置背景颜色并重新验证,但似乎没有完成这项工作。
有什么想法吗?
编辑:我尝试了以下(在 edt 内),它似乎只更改了数组上的最后一个 JLable:
for (int j = 0;j<playerCards.length;j++){
remove(playerCards[j]);
}
【问题讨论】:
-
你的代码是错误的,因为你没有发布你的
SSCCE来证明我们无法帮助的问题。 setIcon() 方法将起作用。您甚至不需要使用 repaint(),因为标签足够聪明,可以在其属性之一发生更改时重新绘制自身。 -
您是否在父容器上使用了
remove()?我不知道将JLabel更改为null是什么意思;例如,如果你说JLabel[] arr;和后来的arr[i] = null;,这对GUI 没有影响(我不知道有任何Swing 组件会关心你的JLabel[]数组)。
标签: java swing jlabel imageicon