kostenloser Webspace werbefrei: lima-city


Animation Canvas

lima-cityForumProgrammiersprachenJava

  1. Autor dieses Themas

    debbo

    debbo hat kostenlosen Webspace.

    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.

    Beitrag zuletzt geändert: 23.10.2010 22:44:37 von debbo
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Warum das blinken nicht funktioniert hat kann ich dir, ohne den Code zu sehen nicht sagen.
    Ohne Threads wird aber auf jeden Fall immer das Problem mit den "eingefrorenen" Buttons auftreten. Einfach aufgrund der Tatsache, dass ein einzelner Prozess nicht gleichzeit arbeiten und auf eine Eingabe warten kann.
  4. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!