Game of Life - pause erzeugen ohne sleep

Andre

The Shocker
Tach zusammen

Ich hab als Aufgabe das Game of Life ( http://www.ibiblio.org/lifepatterns/ ) zu erstellen allerdings als wirklich ziemlich abgespeckte Version d.h. die Felder werden gezeichnet :P ... naja zu meinem Problem. da ich die pausen zwischen den einzelnen spielzügen bis jetzt immer mit einem
Code:
Thread.sleep(Integer.parseInt(speed.getText()));
gemacht hab ich aber ein start und stop butten hab kann ich nicht während das Programm läuft auf stop klicken um damit er halt aufhört weiter zu berechnen ... meine Frage ist nun: ob es eine möglich kein bzw. einen Befehl gibt der eine pause macht aber nicht direkt alles sperrt? ... habs auch schon mit einer for schleife versucht die bis 65000 hoch zählt aber ich seh an der Schnelligkeit nicht wirklich ein unterschied als wenn ich es einfach so durchlaufen lasse.

hier mal nen kleiner ausschnitt aus meinem Code wo ich die einzelnen spielzüge nach dem klick auf den startButton verarbeite :
Code:
...
SpieldesLebens spiel = new SpieldesLebens();
spiel.bestueckeSpielfeld(Integer.parseInt(lebewesen.getText()), Integer.parseInt(goesse.getText()));

                String spielfeld = spiel.ausgeben();
                text.setText(spielfeld);

                // for (anz_jahre = 0; anz_jahre >= 0; anz_jahre++) {
                do {
                    spiel.spielzug();

                    text.setText(spielfeld);
                    String spielfeld1 = spiel.ausgeben();

                    StringBuffer anzeige = new StringBuffer();
                    anzeige.append(spielfeld1);
                    setzeInhalt(anzeige.toString());
                    labeljahre.setText("" + anz_jahre);
                     try {
                        Thread.sleep(Integer.parseInt(speed.getText()));
                    } catch (InterruptedException exception) {
                        // ...
                    }
                     //zählt wieviele jahre schon gegangen sind
                    anz_jahre++;
                } while (!stop);
                // System.out.println("ActionEvent:" + e.getActionCommand());
            }
der stop Button:
Code:
 ActionListener stopbuttonListener = new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                stop = true;
            }

        };

Ps.: Fals ihr noch mehr von dem Code sehen wollt einfach sagen ;)
 
Du machst die Berechnungen und die Ausgabe in der Methode des Startbuttons?
So kann das nicht gehen.
Mach einen Thread, der das ganze übernimmt; beim Startknopf dann nur noch den Thread starten
 
also die berechnung wird halt in einer anderen klasse gemacht ( SpieldesLebens.java ) und jop die ausgabe wird dann in der methode gemacht ( übrigends mit GridBaglayout flas das was hilft ^^ ) ... hhmm ok dann überleg ich mir mal wie ich das so hinbekomme weil bin halt noch nicht so lang mit java dran :P
aber danke für die hilfe :)
 
Zurück