Thread pausieren

  • Hi Leute,


    ich bin gerade dabei ein kleines Spiel zu schreiben. Bisher habe ich 2 Klassen:
    "Mastermind.java" und "Stoppuhr.java".


    die Stoppuhr soll einfach die Zeit hochzählen im Format: m:s "00:00"


    die Stoppuhrklasse sieht so aus:



    und die Zeit soll mit in einer Swing-Oberfläche angezeigt werden:




    Ich kann die Zeit zwar mit dem "newGameItem" starten aber das mit pause und resume funktioniert leider nicht.
    Kann mir vielleicht jemand weiterhelfen und/oder Verbesserungsvorschläge machen?


    Danke schon mal im Vorraus,


    Mfg,
    Chiller


    Edit by Awesome:
    Habe den code-Tag mal verbessert & Spoiler für die Übersicht hinzugefügt.

  • Also so wie ich das sehe, machst du gar kein Thread Objekt und rufst damit auch die run() Methode auf.


    Das geht so:
    Thread thread1 = new Thread(Hier kommt das Objekt rein, dass in einem Thread laufen soll);
    thread1.start(); //Damit wird die run() Methode gestartet.


    Dann noch was du besser machen solltest:
    mach lieber implements Runnable anstatt extends Thread, ist das gleich aber dann kannst du noch von einer anderen Klasse erben.
    Und verwende nie Umlaute wie ä, ö und ü.

  • ich habe die beiden threads leider vergessen noch beim code mit anzugeben (habe ihn gekürzt)


    private Stoppuhr s = new Stoppuhr();
    private Zeit zThread = new Zeit();


    der compiler meckert über nichts aber es geht einfach nicht^^


  • Das liegt daran, dass du einfach nur Objekte erstellst.


    Also so müsste es gehen:


    private Stoppuhr uhr;


    uhr = new Stoppuhr();


    Thread thread1 = new Thread(uhr);
    thread1.start();

  • ok jetzt sieht es so aus... (geht aber immer noch nicht):





    gerade ein bisschen was verändert... funktioniert leider immer noch nicht.

  • Also, ich hab zwar immer noch nicht wirklich kapiert, was du willst aber denke du hast das hier falsch:

    Code
    1. pauseGameItem.addActionListener(new ActionListener() {
    2. public void actionPerformed(ActionEvent e) {
    3. if(s.getPause()){
    4. s.resumeZähler();
    5. }
    6. else if(!s.getPause()){
    7. s.pauseZähler();
    8. }
    9. }});


    Du hast, wenn pause true, es wieder auf true gesetzt und wenn pause false war, wieder auf false.
    Also wenn man jetzt Pause drückt, pausiert die Zeit aufjedenfall mal.

  • Das klingt jetzt vielleicht wie eine Anfänger-Frage aber ich stelle sie trotzdem mal:


    In der "Mastermind"-Klasse erzeuge ich mir ja ein Objekt "gui".
    Wie kann ich in Klasse "StoppUhr" die Methode gui.update(); aufrufen?
    Wenn es nicht geht, wie kann ich dann in dem Thread von Stoppuhr ein JLabel von Mastermind updaten?




    Mfg



    EDIT:// ok ich habe es anders gelöst...^^ funktioniert jetzt