Threads in Swing

BlubBlub

Bekanntes Mitglied
Hi ich habe einen Editor erstellt.
Dort habe ich ein großes Panel (MainPanel).
In diesem MainPanel befinden sich kleine Panels (SmallPanel)
querbet auf dem großen Panel verteilt.
Es ist möglich die Panels sichtbar bzw. unsichtbar zu machen. Dazu packe ich die
Panels in eine Layer die über oder unter dem Layer des MainPanel ist. Funktioniert ja auch gut.

Mein Ziel ist es die SmallPanels blinken zu lassen.
Dazu müsste ich irgendwie sowas machen:

Code:
boolean blink = true;

while(blink)
{
mainLayeredPane.setLayer(smallPanel, visibleLayer bzw invisibleLayer);
sleep(2000);
}

Die GUI soll aber weiterhin bedienbar sein auch wenn die smallPanels blinken.
Leider weiß ich grad nicht so ganz wie ich das realisieren soll.
Ich verstehe einfach nicht so genau was das bedeutet, dass Swing nicht Threadsafe ist.
Ich hatte mir überlegt einen Thread zu starten sobald der User sagt dass die small
Panels blinken sollen. Und dieser Thread macht in etwa das was oben im Pseudocode steht.
Während der Threat nun in der while Schleife ist, soll der Benutzer aber weiter mit der
GUI interagieren können. Irgendwann soll der Benutzer dann sagen, jetzt ist schluss mit blinken.
daraufhin soll die Ausführung des Threads gestoppt werden. Allerdings soll der Benutzer zu jeder Zeit wieder das Blinken starten können.

Kann ich das einfach so machen, dass ich einen Thread erstelle, den starte sobald der Benutzer über einen Button "blinken" wählt. Und wenn der Benutzer auf den "nicht blinken" Button klickt, wird das
flag blink im Thread auf false gesetzt, was dazu führt dass der Thread beendet wird. Klickt der Benutzer wieder auf den "blinken" button, so erstelle ich wieder einen Thread und lasse ihn starten.
 

André Uhres

Top Contributor
Hallo BlubBlub,

für diese Anwendung, wo der beschriebene Vorgang (sichtbar/unsichtbar machen) naturgemäß sehr schnell ausgeführt wird, empfehle ich Dir den javax.swing.Timer (der SwingWorker ist eher für Vorgänge gedacht, deren Ausführung eine Weile dauern könnten). Swing-Timer benutzen alle den gleichen, bereits bestehenden Timer-Thread und führen die GUI-bezogene Aufgabe automatisch auf dem Event-Dispatch Thread aus, so dass sie "threadsafe" sind.

Swing-Timer sind auch sehr einfach zu bedienen. Wenn wir den Timer erstellen, geben wir einen Action-Listener an, der benachrichtigt wird, wenn der Timer "anschlägt". Die actionPerformed-Methode in diesem Listener sollte den Code für die benötigte Aufgabe enthalten. Wenn wir den Timer erstellen, geben wir auch die Anzahl der Millisekunden zwischen den Timer-Zündungen an. Wenn wir den Timer nur einmal ausführen möchten, können wir setRepeats(false) auf dem Timer aufrufen. Zum Starten des Timers rufen wir die start-Methode auf. Um ihn zu stoppen, rufen wir stop auf.

Gruß,
André
 

BlubBlub

Bekanntes Mitglied
danke für die tipps. habe es mit dem javax.swing.Timer ausprobiert und
es funktioniert. allerdings wäre es optimal wenn noch eine sache möglich wäre.
ich würde gerne dass der Timer als Daemon ausgeführt wird.

Momentan habe ich ein GUI die eine andere GUI startet. In dieser zweiten GUI verwende ich die
Timer. Wenn ich die zweite GUI nun schließe über das "X" Symbol oben rechts in der Fensterecke,
so kann ich sehen dass der Timer Prozess noch weiter läuft.
Erst wenn ich das erste Fenster schließe, welche das zweite Fenster geöffnet hat, wird auch der Timer Prozess abgebrochen.
Kann ich den Timer irgendwie als Daemon laufen lassen. Also sowas wie myTimer.setDaemon(true) oder so? Wenn die zweite GUI geschlossen wird sollen einfach alle Timer abgebrochen werden.
 

André Uhres

Top Contributor
...Wenn die zweite GUI geschlossen wird sollen einfach alle Timer abgebrochen werden.
Swing-Timer benutzen alle den gleichen, bereits bestehenden Timer-Thread, welcher als Daemon läuft.

Die beiden Swing Fenster liegen ja innerhalb derselben VM. Somit hat das Schließen eines Fensters hat keine Auswirkung auf die Threads innerhalb der VM, egal ob das Daemons sind oder nicht.

Gruß,
André
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Swing ProgressBar über 2 parallel laufende Threads AWT, Swing, JavaFX & SWT 2
C Threads Swing AWT, Swing, JavaFX & SWT 11
S Java Swing GUI mit MVC und Threads AWT, Swing, JavaFX & SWT 6
R Swing Java Swing Gui und nebenläufige Threads AWT, Swing, JavaFX & SWT 4
R Swing Swing und die Threads AWT, Swing, JavaFX & SWT 9
B Frage zu Swing,Threads, SwingWorker und Socket Communikation AWT, Swing, JavaFX & SWT 4
A Swing und Threads AWT, Swing, JavaFX & SWT 8
R Swing & Threads AWT, Swing, JavaFX & SWT 4
P Threads und Swing bzw. AWT AWT, Swing, JavaFX & SWT 15
W Swing, 2 JProgressbars und threads geht das? AWT, Swing, JavaFX & SWT 2
K Swing und Threads AWT, Swing, JavaFX & SWT 11
M Threads in Swing? AWT, Swing, JavaFX & SWT 2
V Swing & Threads ??? AWT, Swing, JavaFX & SWT 3
frager2345 Threads -> Ereignisbehandlung AWT, Swing, JavaFX & SWT 2
N jFrame löscht am Ende des Threads alles AWT, Swing, JavaFX & SWT 2
J GUI Ausgaben aus Threads AWT, Swing, JavaFX & SWT 13
N JavaFX Logging des JavaFX Application Threads mit Log4J AWT, Swing, JavaFX & SWT 3
U JAVAFX observer und threads AWT, Swing, JavaFX & SWT 1
J Textlabel verändern mit parallelen Threads AWT, Swing, JavaFX & SWT 7
Sugan Inhalte mit Threads ändern -> java.lang.IllegalStateException AWT, Swing, JavaFX & SWT 6
R Straßenkreuzung - Ampeln mit Threads koordinieren AWT, Swing, JavaFX & SWT 5
Z JavaFX Threads AWT, Swing, JavaFX & SWT 4
T hallo, habe ein Problem mit dem pro. eines Threads AWT, Swing, JavaFX & SWT 4
M Threads - nicht erklärbare Exception AWT, Swing, JavaFX & SWT 6
R Repaint() in Schleifen, Threads AWT, Swing, JavaFX & SWT 13
M Frage zu Threads AWT, Swing, JavaFX & SWT 3
C JTextArea scrollt bei append(String) aus Threads nicht ans Ende AWT, Swing, JavaFX & SWT 7
K Threads - Timer - run() mehrfach parallel? AWT, Swing, JavaFX & SWT 2
B GUI mit Threads aufbauen AWT, Swing, JavaFX & SWT 5
E Threads Ausgaben in GUI anzeigen lassen AWT, Swing, JavaFX & SWT 14
P JavaFX 2 (2.1 Beta) Threads AWT, Swing, JavaFX & SWT 7
M Problem mit Threads AWT, Swing, JavaFX & SWT 64
S Swing Threads Windows 7 64 bit AWT, Swing, JavaFX & SWT 12
J Threads + JFrame AWT, Swing, JavaFX & SWT 4
R Java threads und synchronized AWT, Swing, JavaFX & SWT 15
N Swing Threads sollen Tabtitel zur Laufzeit ändern AWT, Swing, JavaFX & SWT 4
S Gui und Aufgaben Threads AWT, Swing, JavaFX & SWT 12
M Zugriff paralleler Threads auf selbes JTextPane AWT, Swing, JavaFX & SWT 6
M Prioritäten bei SwingWorker / Threads AWT, Swing, JavaFX & SWT 9
B Swing GUI und Threads AWT, Swing, JavaFX & SWT 4
R Korrektes manipulieren der GUI aus anderen Threads heraus AWT, Swing, JavaFX & SWT 19
S Threads und Layout AWT, Swing, JavaFX & SWT 9
S Threads in einen Frame zeichnen lassen (Paint()?!) AWT, Swing, JavaFX & SWT 5
W GUI in mehreren Threads AWT, Swing, JavaFX & SWT 5
F Swing Anfängerproblem Threads AWT, Swing, JavaFX & SWT 6
S Swing Threads und das Ändern des Hintergrundes ... AWT, Swing, JavaFX & SWT 2
S Zeichnen in Threads AWT, Swing, JavaFX & SWT 4
T Auf Ende von mehreren Threads warten, ohne den EDT zu blockieren AWT, Swing, JavaFX & SWT 1
J SWT SWT und Threads AWT, Swing, JavaFX & SWT 5
borobudur SWT SWT-Framework und Threads AWT, Swing, JavaFX & SWT 12
W Threads nacheinander aufführen AWT, Swing, JavaFX & SWT 5
B JProgressbar wird nicht aktualisert, trotz Threads AWT, Swing, JavaFX & SWT 6
K Timer und Threads ruckeln für Fotoschwenk AWT, Swing, JavaFX & SWT 3
S JProgressBar und Threads AWT, Swing, JavaFX & SWT 11
G Probleme mit jList und Threads. AWT, Swing, JavaFX & SWT 3
R 2 Threads nacheinander. Einer terminiert, der andere nicht. AWT, Swing, JavaFX & SWT 9
J Unterschied zwischen SwingWorker und Threads AWT, Swing, JavaFX & SWT 4
W Threads und trotzdem keine Nebenläufigkeit AWT, Swing, JavaFX & SWT 13
G Fenster erst nach Stoppen des Threads anzeigen AWT, Swing, JavaFX & SWT 3
N Threads kein neues Fenster erzeugen lassen AWT, Swing, JavaFX & SWT 4
G problem mit threads/repaint ! AWT, Swing, JavaFX & SWT 2
A JTextArea und Threads AWT, Swing, JavaFX & SWT 9
B Probleme mit GUI und Threads AWT, Swing, JavaFX & SWT 17
E repaint(), EDT-Warteschlange und Threads AWT, Swing, JavaFX & SWT 26
S Threads in Java AWT, Swing, JavaFX & SWT 22
G AWT + Threads = nicht gut :P AWT, Swing, JavaFX & SWT 6
F Verständis Problem zu Threads AWT, Swing, JavaFX & SWT 2
M Swinganwendung Threads mit JProgressBar AWT, Swing, JavaFX & SWT 7
V Problem mit Aktualisieren von JList mit Threads AWT, Swing, JavaFX & SWT 3
U FileChooser Layout - Threads? AWT, Swing, JavaFX & SWT 17
R JProgressBar ohne Threads verwenden AWT, Swing, JavaFX & SWT 6
I JList, AbstractListModel und nebenläufige Threads AWT, Swing, JavaFX & SWT 2
S "Millionen" von Threads? Programm komplett beenden AWT, Swing, JavaFX & SWT 2
M Konsolenprg-Ausgabe in GUI geleitet - Brauche ich Threads? AWT, Swing, JavaFX & SWT 2
C Schweres Problem mit JDialog und Threads! Anzeige blockiert! AWT, Swing, JavaFX & SWT 5
N Netzwerk-Applikation, SWT und Threads AWT, Swing, JavaFX & SWT 4
R createBufferStrategy() und Threads AWT, Swing, JavaFX & SWT 5
D Threads unter JFrame AWT, Swing, JavaFX & SWT 2
G Nochmal Threads und Einfrieren des GUI :( AWT, Swing, JavaFX & SWT 10
D Problem mit JProgressBar und Threads AWT, Swing, JavaFX & SWT 7
Juelin javax.swing in javafx AWT, Swing, JavaFX & SWT 1
A Eclipse 2023 und Swing AWT, Swing, JavaFX & SWT 4
W 2 JTables in einem Swing-Fenster? AWT, Swing, JavaFX & SWT 5
H Swing Componente zur Läufzeit ändern AWT, Swing, JavaFX & SWT 3
B Actionlistener mit Java Swing AWT, Swing, JavaFX & SWT 2
W Gibt es einen "automatischen Listener" in Swing oder JTable oder der ATM-Klasse? AWT, Swing, JavaFX & SWT 14
H Swing Buttons erst nach Klick sichtbar AWT, Swing, JavaFX & SWT 13
ExceptionOfExpectation Anpassung von JKomponentengrößen (Swing) AWT, Swing, JavaFX & SWT 3
thor_norsk AWT SWING Aufgabe AWT, Swing, JavaFX & SWT 7
U Zwei Fragen zu eienr Swing Aufgabe AWT, Swing, JavaFX & SWT 2
M Swing Bilder in Swing anzeigen AWT, Swing, JavaFX & SWT 9
H Swing , GridLayout, Größenbestimmung der Komponenten im Layout AWT, Swing, JavaFX & SWT 8
H Simple Animation mit Swing AWT, Swing, JavaFX & SWT 2
Guybrush Threepwood Einfachste Möglichkeit zum Abspielen eines Videos in Swing AWT, Swing, JavaFX & SWT 4
M Swing GridLayout AWT, Swing, JavaFX & SWT 2
O return-Statement mit Swing AWT, Swing, JavaFX & SWT 6
O Ein Java-Programm mit Swing steuern AWT, Swing, JavaFX & SWT 1
Monokuma Swing zu JavaFX AWT, Swing, JavaFX & SWT 5
J Swing Slider AWT, Swing, JavaFX & SWT 11
G Thread starten Swing AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen

Neue Themen


Oben