Feststellen, ob Labeltext vollständig angezeigt wird
Robert
- java
0 Marc Reichelt0 Robert
Hallöle,
ich hab mal wieder ein Wald&Bäume-Problem und bitte um Hilfe.
folgende Situation:
Ein JLabel, das einen unter Umständen relativ langen Text (einen Dateipfad) anzeigen soll.
Beschränkter Platz, daher ist preferredSize und maximumSize auf einen festen Wert gesetzt.
Soweit noch kein Problem.
Wenn der Text zu lang ist, wird er von Java gekürzt und am Ende ... angezeigt.
Und genau dann, wenn diese Verkürzung stattfindet, würde ich gerne einen ToolTipText setzen.
Den ToolTipText zu setzen ist ja auch kein Problem - aber wie finde ich heraus, ob der Text vollständig angezeigt (also kein Tooltip nötig) wird oder unvollständig (also Tooltip nötig)?
Irgendwie steh ich momentan vor den Bäumen und seh den Wald nicht ...
cu,
Robert
Hallo Robert,
Das ist vielleicht nicht ganz die Lösung deines JLabels, aber zumindest eine gute Variante:
Erstelle doch ein Textfeld, dass diesen Wert enthält.
Beim Textfeld kann man nämlich auch einstellen dass der Text nicht editierbar ist, und trotzdem kann man ihn noch markieren - und wenn der Text zu lang ist sich mit den Tasten oder der Maus nach rechts bewegen (ohne Scrollbalken).
Ist die Variante auch sinnvoll?
Jedenfalls brauchst du da keinen Tooltip etc.
cu
Marc Reichelt || http://www.marcreichelt.de/
Hallöle
Das ist vielleicht nicht ganz die Lösung deines JLabels, aber zumindest eine gute Variante:
Erstelle doch ein Textfeld, dass diesen Wert enthält.
Beim Textfeld kann man nämlich auch einstellen dass der Text nicht editierbar ist, und trotzdem kann man ihn noch markieren - und wenn der Text zu lang ist sich mit den Tasten oder der Maus nach rechts bewegen (ohne Scrollbalken).
Hm - lieber wäre mir eigentlich schon die Lösung ohne Textfeld, nur mit Label - eben weil da nicht markiert werden kann ...
Gibt es denn wirklich keine Möglichkeit, festzustellen, ob der Platz für den Text ausreicht?
cu,
Robert
Hi,
Gibt es denn wirklich keine Möglichkeit, festzustellen, ob der Platz für den Text ausreicht?
Keine mit vertretbarem Aufwand. Meines Wissens handelt es sich bei den "..." _nicht mehr_ um einen Teil irgendeiner Objekteigenschaft, die man abfragen könnte, sondern "nur noch" um in den GraphicBuffer gerenderte Pixel. Theoretisch könntest Du also nach diesem graphischen Muster suchen oder selbst kalkulieren, ob der Text bei gegebener Schriftart (bzw. den verwendeten Glyphen) überhaupt noch in die von Dir vorgegeben Dimensionen des Labels passen kann. Ob ein solcher Ansatz als ein eher einfacher anzusehen ist, musst Du selbst entscheiden ;-)
Ich hatte ein Problem mit einem JTree und den Knoten-Texten. Wurden zur Laufzeit letztere geändert, so dass sie "mehr Platz beanspruchten", tauchten auch "..." auf (weil das Layout der Knoten - vermutlich aus Performancegründen - bei einer Änderung der Knoten-Label nicht implizit neu berechnet wird)). Die am schnellsten umsetzbare Lösung bestand im Aufruf von <SwingUtilities.updateComponentTreeUI(tree)> (eine zur Laufzeit zu Langsamkeit neigende Lösung, da der Baum im Prinzip komplett neu aufgebaut wird). Ein entsprechender Ansatz wird Dir wohl aber nicht helfen, da Du ja die "..." durch die Layout-Restriktionen überhaupt erst erzwingst.
Viele Grüße,
Martin