Ich überprüfe manchmal beim Debuggen die Größe meiner Komponenten, um herauszufinden, warum ich sie zum Beispiel nicht sehen kann. In den meisten Fällen werden die Größen realisiert, wenn die Benutzeroberfläche gerendert wurde . Dies kann auftreten, wenn pack()
oder setVisible(true)
das Fenster der obersten Ebene aufgerufen hat. Meine übliche Reihenfolge von Methodenaufrufen besteht darin, zuerst pack()
aufzurufen, da dies den Layout-Managern die Anordnung der Komponenten, für die sie verantwortlich sind, und die Größe der Komponenten und der GUI mitteilt, und dann setLocationRelativeTo(null)
aufruft, um meine GUI zu zentrieren Rufen Sie dann setVisible(true)
auf, um es anzuzeigen.
Der Layoutmanager ist verantwortlich für die Bestimmung der Größe einer Komponente, so dass Sie ihre tatsächliche Größe erst kennen, wenn die Komponente dem Rahmen hinzugefügt und der Rahmen packen () oder sichtbar gemacht wurde.
>Wenn Sie einen Layout-Manager verwenden, der die bevorzugte Größe einer Komponente berücksichtigt, können Sie Folgendes verwenden:
%Vor%Warum denken Sie, dass Sie die Größe wissen müssen? Im Allgemeinen müssen Sie sich nicht um Größen kümmern und den Layout-Manager seine Arbeit machen lassen.
Zusätzlich zu den üblichen pack()
& gt; setVisible(true)
& gt; getPreferredSize()
sequence, Sie können validate()
die relevante Container
Vorschau der Geometrie, wie hier .
Wenn ich es richtig verstehe, ist der Grund, warum Sie die Größe einer Komponente wissen wollen, das Zurücksetzen der Größe eines JWindows, sobald ein Benutzer auf die Schaltfläche "Weitere Optionen" klickt, oder?
Ich würde Folgendes vorschlagen: Wenn der Benutzer auf diese Schaltfläche klickt, aktualisieren Sie Ihre Benutzeroberfläche, indem Sie die zusätzliche Komponente hinzufügen, und führen Sie pack()
auf JWindow
aus. Es sollte auf die richtige Größe angepasst werden.
Tags und Links java swing jcomponent