[Java] GUI aktualisieren - Schulprojekt

07/02/2011 14:52 Endtothenight#1
Hi zusammen,

wir sollen in Informatik ein Projekt in Java veranstalten, wobei ich mich mit einem Kollegen für eine Umsetzung des bekannten Brettspiels "Mensch ärgere dich nicht" entschieden habe. Wir haben jetzt angefangen für jedes Team einzelne Klassen zu schreiben etc. ...
Hier erstmal ein Bild des jetztigen Standes:
Wenn man auf "Startaufstellung" klickt, dann sollten zuerst alle 16 Spielfiguren initialisiert werden und danach auf die richtigen Felder verschoben werden, jedoch muss man 2 mal auf diesen Button klicken, damit die Veränderung sichtbar zu machen. Frage: Wie kann ich den dazu bringen, dass der das vorher aktualisiert?

Ich werde das Projekt im Anhang mal anhängen, das Ganze ist mit der Netbeans IDE erstellt.

Danke für alle Lösungsvorschläge.

LG, Morris
07/02/2011 15:03 Obilee#2
Ich schau es mir mal an.

Ohne jetzt mir den Code genau angeschaut zu haben:
Ich würd die repaint() Methode nutzen beim ActionListener vom Button. Ansonsten ist es etwas komisch das ihr für jedes Team eine eigene Klasse habt. Erstellt doch einfach eine Klasse "Team" und von der halt 4 Instanzen wobei jede Instanz das Rote Team usw. abbildet.

Die GUI habt ihr mit nem GUI-Builder gemacht oder ?
07/02/2011 15:10 Endtothenight#3
Quote:
Originally Posted by Obilee View Post
Ich würd die repaint() Methode nutzen
Das habe ich bereits versucht, nur leider ändert sich da nicht viel.
Das mit den 4 Klassen machen wir eig nur weil unser Lehrer ein Klassenfanatiker ist und ihm das sicher gefällt ;)

Edit: Die GUI haben wir mit dem Builder gemacht, ja.
07/02/2011 15:31 Obilee#4
Macht aber keinen Sinn :P
Außerdem müssen dann die 4 Klassen groß geschrieben werden.

Dacht mir schon das es ein Builder ist, so hässlichen Code können nur die erstellen.


Code:
 jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });
Wie ich sehe habt ihr nen ActionListener der dann die ActionPerformed aufruft und dort startet ihr das Spiel. Haut mal die Startmethoden direkt in den ActionListener.

Ich versteh auch nicht warum ihr im initGame() btn_wuerfeln.setEnabled(false); habt und in der setstart() Methode die direkt danach aufgerufen wird wieder btn_wuerfeln.setEnabled(true);
07/02/2011 15:43 Endtothenight#5
Quote:
Originally Posted by Obilee View Post
Macht aber keinen Sinn :P
Außerdem müssen dann die 4 Klassen groß geschrieben werden.

Dacht mir schon das es ein Builder ist, so hässlichen Code können nur die erstellen.


Code:
 jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });
Wie ich sehe habt ihr nen ActionListener der dann die ActionPerformed aufruft und dort startet ihr das Spiel. Haut mal die Startmethoden direkt in den ActionListener.
Also den Inhalt von setStart() direkt in den Action Listener? - Ich probiers mal.

Quote:
Originally Posted by Obilee View Post
Ich versteh auch nicht warum ihr im initGame() btn_wuerfeln.setEnabled(false); habt und in der setstart() Methode die direkt danach aufgerufen wird wieder btn_wuerfeln.setEnabled(true);
Relativ einfache Erklärung: Wir hatten erst vor initGame() nachdem die Oberfläche gezeichnet ist aufzurufen um das direkt initialisiert zu haben. Dann sollte man aber nicht direkt zu würfeln anfangen, sondern erstmal die Startposition einnehmen. Da wir das aber nicht auf die Reihe gekriegt haben und vergessen haben das wieder rauszunehmen steht das da immernoch drin ;)
__________
Edit: Wenn ich das direkt in den Action Listener packe ändert sich nichts.
07/02/2011 15:46 Obilee#6
Einfach die Methoden schon im Listener aufrufen.
Müsst ihr auch beim aller erste mal 2x den Knopf rufen damit die Label sichtbar werden ? Das Problem ist ja das die Label erst nach dem 2ten mal Drücken zu sehen sind / an der Startposition sind richtig ?

Ich hab kein NetBeans drauf von daher kann ich es nicht selber testen.


Edit: Habs jetzt in Eclipse getan und werd mal selber dran rumschrauben
07/02/2011 15:53 Endtothenight#7
Also die Labels, in denen Text drinsteht/ die ein Icon haben, die sieht man von Anfang an.
Das Problem ist, dass die sich erst beim 2. Drücken richtig verschieben, genau.

Welchen Listener meinst du jetzt genau, den von dem Button oder gibt es noch einen "größeren", ich kenne mich da nicht wirklich aus...

Kann ich dir weiterhelfen, wenn ich das kompiliert Java Teil hochlade?
07/02/2011 16:30 Obilee#8
Muss iwo an dem crap gui builder code liegen ( wo ich atm keine lust habe mich dort alles durchzulesen).
der moved die erst nachdem 2x die startgame methode aufgerufen worden ist, aber wenn ich sogar im listener die methode 2x hintereinander aufrufe per hand verstellt er die teile nicht. er ruft aber bei jedem knopfdruck die methoden richtig auf.
07/02/2011 17:19 Endtothenight#9
Quote:
Originally Posted by Obilee View Post
Muss iwo an dem crap gui builder code liegen ( wo ich atm keine lust habe mich dort alles durchzulesen).
der moved die erst nachdem 2x die startgame methode aufgerufen worden ist, aber wenn ich sogar im listener die methode 2x hintereinander aufrufe per hand verstellt er die teile nicht. er ruft aber bei jedem knopfdruck die methoden richtig auf.
Also müsste der das rein theoretisch machen, hat aber keine Lust dazu?

Ich häng jetzt mal die .jar Datei an...