Seiten

Mittwoch, 2. Februar 2011

Java Development 2-2-2011

Heute war ein großer Java - Tag.

Für die Arbeit an dem Zeiterfassungs - Tool musste ich eine Uhr schreiben, die für den Benutzer mitläuft. Hörte sich ursprünglich shr einfach an, war aber ein programmiertechnischer Alptraum. Für jemanden, der von Threading noch nie etwas gehört hat möglicherweise nicht zu lösen.

Zuerst wollte ich, weil mich der Ehrgeiz gepackt hat natürlich eine eigene Uhr schreiben, die auch richtig funktioniert. Nachdem ich erkannt habe was für Anforderungen daraus erwachsen ( durch die Notwendigkeit einen parallelen Prozeß laufen zu lassen, der die Uhrzeit berechnet ) habe ich mir überlegt einfach einen Abfrage der Systemuhr zu übergeben. Diese Abfrage muss aber auch irgendwo gemacht werden.

Sicher kann diese Berechnung nicht die GUI Klasse durchführen, da sie die etwas störende Eigenschaft hat bei Aufgaben, die nichts mit der Darstellung der GUI zu tun haben und über die einfache einmalige Belegung von Variablen hinausgehen einzufrieren, sich zu benässen und zu sterben.
Somit musste ich ohnehin einen parallel laufenden Thread erzeugen und habe mich wieder daran gemacht meinen eigenen kleinen Wecker zu schreiben.
Vorneweg: verwendet habe ich die Java Timer Klasse, deren wunderbare scheduler-Methode allerdings ein Objekt vom Typ Timertask benötigt. Beide Threadfunktionen. TimerTask stellt das run() - Interface zur Verfügung, dass implementiert werden muss. Also habe ich mir zwei nette kleine Klassen geschrieben, die eine ein TimerTask und die andere ein Timer mit einer wunderbaren Singleton-Funktion, die dafür sorgt, das beim Klicken auf die Start methode, bei der eigentlich ein Timer erzeugt und gestartet wird, keine unnötigen Instanzen erzeugt werden.
Mein nächstes Problem war, dass der Timer nur über eine close() - Methode verfügt, die keine Rückgabe hat und den Thread beendet. Durch die Singleton konnte ich aber nicht einfach einen neuen Thread erzeugen. Durch Suchen stieß ich darauf, dass man auch die TimerTasks wunderbar beenden und neu in den Timer einstellen kann. als ich schließlich das erkannt habe war nur noch ein wenig codegeschiebe nötig.

Zum Schluß habe ich mich noch mit der ziemlich unübersichtlichen und unangenehmen GUI erstellung von java beschäftigt. Dank des Visual Editors, der mir wenigstens Einblicke ermöglichte konnte ich mich Stück für Stück an die wunderbaren gridBagConstraints und add()-Funktionen heranpirschen.
- kann man das nicht irgendwie Praktischer umsetzen?

Ja das war mein Java- Tag

Keine Kommentare:

Kommentar veröffentlichen