我正在創建一個二十一點遊戲,並且每次用戶單擊一個按鈕時都需要刷新JFrame
。但是,框架是不更新!我試了幾個小時試圖解決這個徒勞。在JFrame問題中重新加載GUI
如何根據我用來加載圖像的堆棧ImageIcon
對象正確地重新加載幀中的所有元素?
這裏是我的代碼:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Stack;
public class Blackjack extends JFrame implements ActionListener {
public void drawGUI(boolean firstTime) {
getContentPane().removeAll();
setLayout(new GridLayout(3, 9, 1, 1));
updateValues();
add(new JLabel(DEALER_TEXT, SwingConstants.CENTER));
add(new JLabel("Value: " + computerValue, SwingConstants.CENTER));
for(int i = 0; i < computerCards.size(); i++)
add(new JLabel(computerCards.get(i).getImagePath()));
leaveSpacing(false);
add(new JLabel(USER_TEXT, SwingConstants.CENTER));
add(new JLabel("Value: " + userValue, SwingConstants.CENTER));
for(int i = 0; i < userCards.size(); i++)
add(new JLabel(userCards.get(i).getImagePath()));
leaveSpacing(true);
if(firstTime) {
hitButton.addActionListener(this);
standButton.addActionListener(this);
}
leaveSpacing(3);
add(hitButton);
add(standButton);
leaveSpacing(1);
}
}
TL; DR;在你瘋了之前,爲什麼不發佈[mcve]讓你更容易找出問題並獲得幫助? – c0der
@ c0der感謝您的回覆。問題正在更新。在actionPerformed(ActionEvent evt)方法中,它調用drawGUI(boolean firstTime)重繪整個JFrame;但它不會刪除所有元素並進行更新。它只是保持元素相同。 –
我明白這一點。我認爲這個問題可以用更短的代碼來證明。 [mcve]也意味着可編輯 – c0der