Ich erstelle ein Blackjack-Spiel und muss die JFrame
jedes Mal aktualisieren, wenn der Benutzer auf eine Schaltfläche klickt. Der Rahmen ist jedoch nicht aktualisiert! Ich habe stundenlang versucht, das vergeblich zu beheben.Reloading GUI in JFrame Probleme
Wie lade ich alle Elemente im Rahmen basierend auf dem Stapel von ImageIcon
Objekten, die ich zum Laden von Bildern verwende, ordnungsgemäß neu?
Hier ist mein Code:
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; Bevor Sie verrückt werden, warum schreiben Sie nicht [mcve], um es Ihnen leichter zu machen, das Problem zu lokalisieren und Hilfe zu bekommen? – c0der
@ c0der Danke für Ihre Antwort. Das Problem besteht darin, zu aktualisieren. In der Methode actionPerformed (ActionEvent evt) wird drawGUI (boolean firstTime) aufgerufen, um den gesamten JFrame neu zu zeichnen; aber es entfernt nicht alle Elemente und aktualisiert sie. Es hält nur die Elemente gleich. –
Ich verstehe das. Ich nehme an, dass das Problem mit viel kürzerem Code demonstriert werden kann. [mcve] bedeutet auch kompilierbar – c0der