Hallo liebe Community,
ich habe ein Problem mit einer Label-Aktualisierung in meinem Memory-Spiel und ich hoffe ihr könnt mir weiterhelfen, da mir mittlerweile die Einfälle ausgehen.
Mein Memory-Spiel besteht aus einem FlowLayout in dem 3 Panels liegen, Panel 1 -> Spielfeld, Panel 2 -> Punktanzeige Spieler /Computer (hier aktualisiert das Label), Status Anzeige wer gerade dran ist -> Hier erfolgt die Labelaktualisierung einfach nicht...:-(
Panel 3 mit einem Schummelbutton:
Anbei meine init-Methode des Konstruktors:
Ferner gibt es eine Methode, die feststellt welcher Spieler dran ist, wenn der Computer ziehen darf, wird die computerzug-Methode aufgerufen:
in der Methode setLabelTextPC und ...Mensch möchte ich die Aktualisierung des Labels vornehmen:
wie Ihr seht hab ich hier schon alles mögliche ausprobiert aber nichts funktioniert. Bis jetzt wird beim ersten Spieler Zug einmal das Label auf den Text "test pumuckl" gesetzt, die Aktualisierung auf "jetzt PC" funktioniert aber nie....
innerhalb der computerzug-Methode wird eine Methode aufgerufen, welche die Karten umdreht... hier läuft dann auch ein Timer der dafür sorgt, dass die Karten nicht gleich wieder umgedreht werden.. kann es hier ein Problem mit der Label-Aktualisierung geben?
Danke
ich habe ein Problem mit einer Label-Aktualisierung in meinem Memory-Spiel und ich hoffe ihr könnt mir weiterhelfen, da mir mittlerweile die Einfälle ausgehen.
Mein Memory-Spiel besteht aus einem FlowLayout in dem 3 Panels liegen, Panel 1 -> Spielfeld, Panel 2 -> Punktanzeige Spieler /Computer (hier aktualisiert das Label), Status Anzeige wer gerade dran ist -> Hier erfolgt die Labelaktualisierung einfach nicht...:-(
Panel 3 mit einem Schummelbutton:
Anbei meine init-Methode des Konstruktors:
Code:
//die Methode erstellt die Oberfläche und zeichnet die Karten
private void initGUI() {
//das Layout setzen
setLayout(new FlowLayout(FlowLayout.LEFT));
//ein Panel für das eigentliche Spielfeld
feld = new JPanel();
//das Panel bekommt ein Gridlayout mit 7 Zeilen
feld.setLayout(new GridLayout(7,0));
//die Karten erstellen und zeichnen
kartenZeichnen(feld);
add(feld);
//für die Ausgaben
ausgabe = new JPanel();
statusleiste = new JPanel();
menschPunkteLabel = new JLabel();
computerPunkteLabel = new JLabel();
/**
* Bei der Einsendeaufgabe kommt noch ein Label hinzu,
* welches anzeigt ob der Computer oder der Spieler
* aktuell am Zug ist, die Anlage des Labels erfolgt
* in der init-Methode
*/
werIstdranLabel = new JLabel();
menschPunkteLabel.setText(Integer.toString(menschPunkte));
computerPunkteLabel.setText(Integer.toString(computerPunkte));
/**
* Schummelbutton, erzeugen, und mit Listener verbinden
*
*/
schummeln = new JButton("Schummeln");
schummeln.addActionListener(new SchummelListener());
//in zwei Spalten
ausgabe.setLayout(new GridLayout(0,2));
ausgabe.add(new JLabel("Mensch: "));
ausgabe.add(menschPunkteLabel);
ausgabe.add(new JLabel("Computer: "));
ausgabe.add(computerPunkteLabel);
add(ausgabe);
statusleiste.setLayout(new GridLayout(2,0));
werIstdranLabel.setText("Du bist der Erste, der spielen darf, decke zwei Karten auf!");
statusleiste.add(werIstdranLabel);
statusleiste.add(schummeln);
add(statusleiste);
}
Ferner gibt es eine Methode, die feststellt welcher Spieler dran ist, wenn der Computer ziehen darf, wird die computerzug-Methode aufgerufen:
Code:
//die Methode wechselt den Spieler
private void spielerWechseln() {
//wenn der Mensch an der Reihe war,
//kommt jetzt der Computer
if (spieler == 0) {
spieler = 1;
setLabelTextPC("Der Nächste der darf ist der Computer");
computerZug();
}
else
spieler = 0;
setLabelTextMensch("Jetzt bist Du wieder an der Reihe und darfst weiter spielen");
}
in der Methode setLabelTextPC und ...Mensch möchte ich die Aktualisierung des Labels vornehmen:
Code:
//die Methode setzt den Text im zweiten Label
public void setLabelTextMensch(String text) {
werIstdranLabel.setText("jetzt mensch");
statusleiste.add(werIstdranLabel);
statusleiste.add(schummeln);
add(statusleiste);
statusleiste.repaint();
// new Thread("Label aktualisieren"){
// public void run(){
// werIstdranLabel.setText("test mensch");
// }
// }.start();
// remove(feld);
// remove(statusleiste);
// remove(ausgabe);
//
// werIstdranLabel.setText("test pumuckl");
// werIstdranLabel.validate();
// werIstdranLabel.repaint();
// werIstdranLabel.revalidate();
// add(feld);
// add(ausgabe);
// add(statusleiste);
// repaint();
// validate();
//
// pack();
//das Fenster neu packen
//werIstdranLabel.updateUI();
//pack();
}
//die Methode setzt den Text im zweiten Label
public void setLabelTextPC(String text) {
werIstdranLabel.setText("jetzt pc");
statusleiste.add(werIstdranLabel);
statusleiste.add(schummeln);
add(statusleiste);
repaint();
//
}
wie Ihr seht hab ich hier schon alles mögliche ausprobiert aber nichts funktioniert. Bis jetzt wird beim ersten Spieler Zug einmal das Label auf den Text "test pumuckl" gesetzt, die Aktualisierung auf "jetzt PC" funktioniert aber nie....
innerhalb der computerzug-Methode wird eine Methode aufgerufen, welche die Karten umdreht... hier läuft dann auch ein Timer der dafür sorgt, dass die Karten nicht gleich wieder umgedreht werden.. kann es hier ein Problem mit der Label-Aktualisierung geben?
Danke