Resize JavaFX Label bei Überlauf

Ich habe ein Label in einem GridPane in einem TitledPane. Ich möchte, dass die Größe schrittweise um 0,05 verringert wird, wenn sie überschritten wird, damit die drei Punkte ("Long Labe ...") nicht angezeigt werden -> "Long Label" in klein.

Eine isOverrun () - Methode für das Label wäre toll, aber JavaFX liefert das nicht und das Leben ist kein Wunschkonzert.
So mein Workarround bisher:

    Bounds tpBounds = tPane.getBoundsInLocal();
    Bounds lblBounds = label.getBoundsInLocal();
    Double fontSize = 1.0;

    while (tpBounds.getWidth() < lblBounds.getWidth() && fontSize > 0.5) {
        fontSize = fontSize-0.05;
        label.setStyle("-fx-font-size: "+fontSize+"em;");

        System.out.println(fontSize+" "+tpBounds.getWidth()+" "+lblBounds.getWidth());
    }

Das Problem: Während der while-Schleife zeigt bounds.getWidth () immer die ursprüngliche Breite an. Die "neue" Breite mit der neuen Schriftgröße wird nicht schnell genug aktualisiert, um von der while-Bedingung erfasst zu werden, sodass die Schriftgröße immer kleiner wird.
Alle Lösungen?

bearbeite
Ich frage häufiger: Ist es wirklich so schwierig, ein Label selbst zu verkleinern, bis es passt, ohne es abzuschneiden?!

Antworten auf die Frage(6)

Ihre Antwort auf die Frage