kostenloser Webspace werbefrei: lima-city


Suche auf lima-city

  • in: Animation Canvas

    geschrieben von debbo

    Hallo,

    mich beschäftigt seit einigen Tagen folgendes Problem.
    Ich möchte eine Ampel realisieren, welche man mit Buttons schalten kann. Dazu habe ich 3 Klassen geschrieben.
    AmpelFrame => ein Frame für die Steuerung der Ampel
    AmpelDialog => ein Dialog der die Ampel anzeigt
    Ampel => eine Klasse die die Ampel zeichnet (geerbt von Canvas)

    Nun habe ich mehrere Buttons, um die Farbe zu ändern. Dazu wird einfach der jeweilige Kreis mit einer entsprechenden Farbe neugezeichnet (setzen der Farbe und Aufruf von repaint())
    Allerdings soll auch gelbes Blinken möglich sein. Die Idee wäre eine Endlosschleife einzubauen und mit Thread.sleep() das ganze abwechselnd zwischen gelb und leer neuzeichnen zu lassen.

    Mein Problem ist jetzt aber, dass repaint() nicht aufgerufen wird, der Prozess aber im Hintergrund an sich läuft. Eine Konsolenausgabe zeigt mir, dass die Schleife genau wie sie sollte durchgearbeitet wird und der farbwechsel eigentlich angezeigt werden müsste. Auch ist es so, dass nachdem ich auf "gelb blinken" geklickt habe, weder andere Buttons noch den Frame oder Dialog mehr schließen kann...also die Fenster sind sozusagen eingefroren.

    Ich denke mal verantwortlich dafür ist einfach die Endlosschleife und nicht das Thread.sleep(). Nun wartet offensichtlich etwas darauf, dass die Ausführung endet und die Anzeige aktualisiert werden darf. Ich bin jedoch erst in den ersten Anfängen in Java.

    Ohne jetzt Quellcode hier posten zu müssen, vieleicht ist der Ansatz völlig falsch oder kann mir jemand erklären, warum das passiert?

    Gruß,
    debbo

    Nachtrag: Also ich habe jetzt noch eine 4. Klasse geschrieben, sozusagen als Thread für das Blinken. Das funktioniert soweit erstmal. Ich nehme mal an es ist einfach so, dass die Grafikausgabe durch die Endlosschleife blockiert wird und man für sowas auf Threads ausweichen muss. Falls es doch ohne Threads gehen sollte, höre ich mir den Lösungsvorschlag gerne an.

Login zum Webhosting ohne Werbung!