ブラックジャックゲームを作成していて、ユーザーがボタンをクリックするたびにJFrame
を更新する必要があります。ただし、フレームはで更新されていません!私は何時間もこれを無駄にしようとしました。JFrameのトラブルシューティングでのGUIのリロード
イメージをロードするために使用するオブジェクトImageIcon
のスタックに基づいて、フレーム内のすべての要素を適切に再ロードするにはどうすればよいですか?あなたのdrawGUI();
メソッドの最後にrevalidate();
とrepaint();
を呼び出す必要が
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