(Java)remove(JLabel)实际上并没有删除JLabel。

问题描述 投票:0回答:0

我在扩展javax.swing.JPanel的类中遇到了一个问题,当我调用remove(我要删除的JLabel)时,它没有删除JLabel。我之前用普通的JPanel也有同样的问题。我该如何解决这个问题?我听说过SwingWorker这个名词,那它能用吗?Layout是FlowLayout。这是我的代码。

public class Game extends JPanel implements Runnable
private void removeCards() {
    for (JLabel imgLabel : cardImages) {
        remove(imgLabel);
    }
    cardImages.clear();
    display.pack();
}
public void reset() {
        player.resetHand();
        dealer.resetHand();
        deck.resetCurrentCard();
        removeCards();
        phase = 0;
        beginGame();
        if (phase == 3)
            remove(winnerSign);
        display.pack();
    }

在调用复位方法后(JButton被按下) 除了JLabels没有被移除之外 所有的东西都会被执行。 它应该有点像这样,只是每张卡都是2张。 但看起来是这样的,之前的卡片没有被移除。

我已经试过添加类似repaint()这样的东西,但没有用。 有人有办法解决这个问题吗?先谢谢你了。 (是的,这一切看起来都很糟糕,但我专注于代码,然后去游戏好看。)

java swing jpanel jlabel
© www.soinside.com 2019 - 2024. All rights reserved.