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.

No comments:

Post a Comment