JavaFx – Abhilfe bei abgeschnittenen Texten

Durch verschiedene Lauflängen von Texten in unterschiedlichen Sprachen kann es mitunter dazu kommen, dass Texte in JavaFx-Labels abgeschnitten oder mit „…“ abgekürzt werden. Um die Usability von JavaFx Applikationen durch dieses Problem nicht zu verschlechtern, haben wir uns auf die Suche nach einer möglichst generischen Lösung gemacht. Unser Lösungsansatz ist in diesem Beitrag skizziert.

Zum Verständnis der Problemstellung demonstriert der nachfolgende Prototyp das Verhalten.

Zu erkennen ist, dass der längere Text „Noooooooooooooooooooooooooooooooooo“, welcher dargestellt werden soll vorzeitig abgeschnitten und mit „…“ abgekürzt wird, da das Label durch welches er dargestellt wird eine fixe Länge besitzt.

Bei dem Versuch, hier möglichst generisch Abhilfe zu schaffen sind wir zu folgender Lösung gekommen:

  • Bei der Anzeige einer Scene prüfen wir für jeden Node der anzuzeigenden Komponente, ob es sich dabei um eine Instanz von Labeled handelt, um Text-Labels zu erkennen.
  • Wenn dem so ist, kalkulieren wir anhand des Label-Textes mittels Toolkit die Länge des Texts
  • Sobald die Breite des Labels sich verändert (und damit auch beim ersten Mal, wenn die Komponente gezeichnet wird), prüfen wir, ob die kalkulierte Textlänge größer ist, als die Feldlänge des Labels (max- oder prefWidth).
  • Wenn dem so ist, fügen wir dem Label ein Tooltip hinzu, dessen Text durch ein entsprechendes Property Binding an den Text des Labels gebunden ist. Dieses zeigt dann den kompletten Text des Labels an, ohne diesen abzuschneiden. Natürlich sind an dieser Stelle auch andere Anpassungen, wie z.B. die Anpassung der Größe des Labels denkbar.

Im Code lässt sich dies wie folgt abbilden:

Das Ergebnis der Anpassung zeigt wiederum unser kleiner Prototyp:

Zwar wird die fixe Länge des Labels beibehalten, der vollständige Text wird aber bei Bedarf durch ein Tooltip angezeigt.

Dadurch kann auf der einen Seite ein fixes Layout eingehalten werden. Auf der anderen Seite gehen für den Benutzer keine Informationen verloren.

Zurück zur Übersicht

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*Pflichtfelder

*