2009-03-22

Textinformationen anzeigen

In diesem Eintrag geht es mal wieder um Swing. Wie Sie wissen, schreibe ich sehr gerne über Themen, die man in oder mit Swing besonders leicht oder elegant lösen kann. Heute geht es darum, Informationen zu einem eingegebenen Text zu präsentieren. Konkret soll dem Anwender mitgeteilt werden, wie viel Text er schon eingetippt hat und wie viel er noch darf. …Sie kennen das sicher aus diversen Webformularen.

Das eigentlich Anspruchsvolle an dieser Aufgabe ist, sie so zu erledigen, dass das Ergebnis keinerlei Auswirkung auf bestehende Layouts hat. Denn natürlich ist es easy, irgendwo ein Label zu setzen, dass dann beliebige Infos anzeigt. Ein solches Vorgehen hätte aber großen Einfluss auf bereits bestehende Komponenten. Außerdem möchte man nicht in jeden Dialog oder jede Maske solche zusätzliche Infolabels “reinfrickeln”.


Das Ergebnis

Wie man sich solche Textinfos vorstellen kann, zeigt obiger Screenshot. Wie aber ist das Problem gelöst worden?

Wie Sie wissen, lassen sich Swing-Komponenten mit einem beliebigen Rahmen versehen. Ein solcher Rahmen ist Teil der Komponente, tritt also nicht als eigenständiges GUI-Element in Erscheinung und hat somit keinen Einfluss auf die Zahl der Elemente in einem Container. Meine Klasse TextInfoBorder realisiert einen Rahmen, der oben, links und rechts nicht sichtbar ist, wohl aber unten rechts zwei Werte ausgibt, nämlich die aktuelle Länge eines Textes sowie die maximale Anzahl an Zeichen.

Texte lassen sich in Swing sehr leicht in ihrer Größe beschränken. Wie das geht, zeigt die Klasse LimitLengthDocument. TextInfoBorderDemo schließlich fügt die Puzzleteile zusammen.

2009-03-08

Meine erste Anwendung für den Androiden

Das Schöne an der Handy-Plattform Android ist ja, dass man Programme in Java schreiben kann. Da mich die APIs dieses Systems interessieren, habe ich ein kleines Programm erstellt, das ein fehlendes Feature nachrüstet: eine Geburtstagsliste. Die Website zu disem Programm ist seit heute online, das Programm selbst möchte ich in naher Zukunft über den Android Market anbieten.

Update 27.12.14: Das Programm ist nach wie vor über Google Play verfügbar.