Wie berechnet man die Pixelbreite eines String in JavaFX?
Scheint es, dass es keine API-Aufruf zu berechnen, die Breite (in Pixel) von einem text-string in Java FX 2.2. Es gab Vorschläge von workarounds auf andere Foren, aber meine Bemühungen zu erstellen oder finden Sie alle code, gibt die Breite eines Strings, entweder mit Hilfe der Standard-schriftart oder sonst, sind gescheitert. Jede Hilfe würde geschätzt werden.
InformationsquelleAutor der Frage Don Wills | 2012-10-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie nur die Messung der Standard-schriftart ohne CSS:
Wenn Sie brauchen, um CSS anzuwenden:
Dies funktioniert, weil es erzwingt, dass ein layout übergeben, der Text ist berechnet, es ist layout-Grenzen.
Die Szene, in Schritt 2, erforderlich ist, denn das ist einfach die Art und Weise der CSS-Prozessor arbeitet (es muss ein Knoten sein, der sich in einer Szene in der Lage sein, Ihre Arbeit zu tun). Auf jeden Fall Lesen Sie die verlinkte javadoc für applyCss wenn man verstehen will, der Verarbeitung weiter.
Beispielcode
Sample program output (zeigt die Breite in Pixel zu einem beliebigen text):
Gelten die schriftart in einem text-Objekt mit der gleichen Botschaft werden Sie plot auf die Leinwand. Im Gegensatz, wenn Sie mess-text aufgezeichnet, um die Szene, Grafik, Objekte aufgezeichnet, um eine Leinwand nicht über CSS zugewiesen werden, so dass Sie nicht brauchen, um setzen Sie den Text-Objekt in einer Szene und CSS angewendet, um Sie vor der Messung den text. Messen können Sie das layout der Grenzen der Ihr text-Objekt und es wird die gleiche sein, wie die Grenzen des Textes gezeichnet, innerhalb der Leinwand mit der gleichen schriftart.
InformationsquelleAutor der Antwort jewelsea
Diese Lösung funktioniert bis java 8:
Diese Klassen wurden inzwischen entfernt und nicht in neueren java-version!
InformationsquelleAutor der Antwort Stas
Habe ich versucht, dieses:
und es scheint einwandfrei zu funktionieren.
InformationsquelleAutor der Antwort Leonardo Santos
InformationsquelleAutor der Antwort dongfangshangren