Kann ich die richtige JComponent-Größe erhalten, bevor sie angezeigt wird?

7

Wann wird die Größe der JComponent berechnet? Nachdem sie auf dem Bildschirm oder davor angezeigt wurden? Wenn ich .getSize() message vor .setVisible(true) sende, würde ich dann die richtige Antwort erhalten? Danke

    
Man o War 22.08.2011, 02:27
quelle

4 Antworten

7

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.

    
Hovercraft Full Of Eels 22.08.2011, 02:36
quelle
6

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.

    
camickr 22.08.2011 02:29
quelle
6

Zusätzlich zu den üblichen pack() & gt; setVisible(true) & gt; getPreferredSize() sequence, Sie können validate() die relevante Container Vorschau der Geometrie, wie hier .

    
trashgod 22.08.2011 02:51
quelle
6

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.

    
Luismahou 22.08.2011 03:52
quelle

Tags und Links