2009-08-18 8 views
7

zunächst das Problem zu beschreiben: Während eines erneuten Layouts aufgrund einer Änderung in der Breite oder Höhe, Java ScrollPaneLayout fordert die preferredSize davon Darstellungs Kinder, bevor Sie die Grenzen es ist. On Text-Components Das Aufrufen von getPreferredSpan kann das Layout ändern, da getPreferredSpan intern setSize aufruft. Der Effekt ist, dass keine Ansicht (Erweiterung von javax.swing.text.View) in dieser Situation die tatsächliche Größe der übergeordneten Komponente sicher abrufen kann. Ein getVisibleRect wird in diesem Fall fehlschlagen, da die Grenzen des Ansichtsfensters noch nicht festgelegt sind. Es ist keine Option, die Gültigkeit der Textkomponente zu überprüfen, um den Layoutprozess zu blockieren, da dies bereits in diesem Szenario möglich ist.Wie bekomme ich während eines validateTree eine korrekte rect?

Also, die Frage ist: Gibt es eine Möglichkeit, um herauszufinden, ob die Grenzen eines JComponent auf dem neuesten Stand sind?

+0

nicht. Idee ....: P – Epaga

+0

Entschuldigung, keine Ahnung. "swing" tag hinzugefügt ... – MartinStettner

+0

Diese Frage ist sehr verwirrend. würdest du es für uns klären? – marionmaiden

Antwort

1

Vielleicht könnten Sie Scrollunterklasse und eine benutzerdefinierte Eigenschaft wie „com.mycompany.BoundsSet“ auf false gesetzt, wenn für ungültig erklärt und es wahr gesetzt, wenn die Grenzen gesetzt sind. Dann kann die Ansicht diese Eigenschaft prüfen und, falls sie falsch ist, das ScrollPanel erneut validieren und die letzte bekannte bevorzugte Größe zurückgeben. Hoffentlich geht das ScrollPane dann weiter und legt seine Grenzen fest, dann wird das Revalidate-Ereignis die Pipe verlassen, und das Flag wird gelöscht, so dass Sie der getBounds() vertrauen können. Oder etwas ähnliches.

0

Können Sie nicht einfach Component#isValid Methode verwenden. Wenn die Methode "true" zurückgibt, bedeutet dies, dass die Komponente in ihrem Parentcontainer korrekt dimensioniert und positioniert ist und alle untergeordneten Elemente ebenfalls gültig sind.

Verwandte Themen