Rechnernetze / Kommunikationssysteme

Praktikum GUI-Threads

Ziel

Praktischer Einsatz von mehreren Threads unter Nutzung einer GUI. Am Beispiel einer Stoppuhr werden Probleme mit (langlaufenden) Threads und GUI aufgezeigt und gelöst.

Aufgabe

Eine grafische Stoppuhr soll die Zeitmessung mittels Start- und Stopp-Taste ermöglichen. Die periodische Aktualisierung der Anzeige soll mittels eines langlaufenden Threads realisiert werden. Dabei ist zu beachten, dass ein Zugriff auf die GUI nur mittels GUI-Thread erlaubt ist. Realisiert werden kann dies unter Zuhilfenahme der Methode EventQueue.invokeLater(), welche den peridischen UpdateRequest im GUI-Tread auslöst.

Funktionalität:

Die Anzeige soll aus den verstrichenen Sekunden und Millisekunden bestehen. Funktion der Tasten:

Start
Beginn der Zeitmessung
Stopp
Zeitmessung anhalten
Null
Uhr auf Null zurücksetzen
Ende
Programmende

Programmaufbau

Klassenstruktur:

Programmrahmen

Klassendiagramm

classDiagram direction BT class Clock { + getTime() long + reset() void } class ClockPresenter { + setModelAndView(Clock, ClockView) void + actionPerformed(ActionEvent) void } class ClockView { + showTime(long) void - initView() void } class Ticker { + run() void } class UpdateRequest { + run() void } ClockPresenter "1" --> "1" Clock: EDT ClockPresenter "1" o--> "1" ClockView: EDT ClockPresenter ..> Ticker : «create» ClockPresenter "1" *--> "1" Ticker : EDT ClockView "1" o--> "1" ClockPresenter: EDT Ticker "1" *--> "1" UpdateRequest: TT Ticker ..> UpdateRequest : «create» UpdateRequest "1" --> "1" Clock : EDT UpdateRequest "1" o--> "1" ClockView: EDT

Fakultativ


Letzte Änderung: 28. April 2023 18:18