swing: Größe eines JFrame bestimmen



  • HI

    ich möchte herausbekommen ob ein Frame groß genug ist um seinen Inhalt darzustellen. (Wenn der frame resizable ist, kann man das Fenster ja so klein ziehen sodass nicht mehr alle elemente dargestellt werden können)

    Ich muss also wissen wie groß das dargestellte Fenster im Moment ist und wie groß die Mindestgröße aller Komponenten zusammen innerhalb des Frames ist.

    ist: Jframe.getContentPane().getMinimumSize() immer die mindestgröße aller Komponenten zusammen die sich in dem contentPane befinden?



  • Nein das macht es nicht.

    Es gibt nicht die Minimum grösse aller Objecte auf dem Frame zurück, sondern nur MinimumSize was man vorher mit setMinimumSize eingestellt hat.



  • hmm das heisst man kommt an die größe des Panels nur heran, indem ich die größe der internen Komponenten zusammen rechne.

    Das dürfte bei einem komplizierten gridbaglayout keine triviale Angelegenheit werden..



  • Kann es sein, dass du bei dem Problem etwas zu kompliziert denkst?
    Verwendest du die methode pack()? oder bringt die dir in diesem Anwendungsfall nichts?



  • @destructor: Ich glaube nicht das ich zu kompliziert denke.

    Angenommen Ich habe einen Root Pane in einem JFrame in welchem sich ein weiteres Panel befindet mit einer MinimumSize von 100x100 pixel. Nun wird der Frame auf eine Größe von 80x80 pixel gebracht, das innere Panel passt also nicht mehr ganz hinein und wird verschnitten.

    Diesen Fall möchte ich abfangen um Gegenmaßnahmen einleiten zu können. Obiges Beispiel erscheint noch trivial, aber wie bestimme ich die mindestGröße die mehrere Panels in einem GridBagLayout zusammen einnehmen.

    pack() berechnet ja den minimalen Platzverbrauch den die inneren Components einnehmen allerdings gibt es diese Größe weder zurück sodass ich sie verarbeiten kann, noch beachtet pack() das die Bildschirmauflösung begrenzt sein kann.
    pack() nutzt zur berechnung wohl die preferredSize des RootPanes des Frames. STeht dort immer die minimale Größe des Panels drin?



  • Angenommen Ich habe einen Root Pane in einem JFrame in welchem sich ein weiteres Panel befindet mit einer MinimumSize von 100x100 pixel. Nun wird der Frame auf eine Größe von 80x80 pixel gebracht, das innere Panel passt also nicht mehr ganz hinein und wird verschnitten.

    Naja bei diesem einfachen beispiel leistet pack() ganz gute Dienste.

    pack() berechnet ja den minimalen Platzverbrauch den die inneren Components einnehmen allerdings gibt es diese Größe weder zurück sodass ich sie verarbeiten kann, noch beachtet pack() das die Bildschirmauflösung begrenzt sein kann.

    Das stimmt, aber du kannst ja nach einem pack() die Größe mit myJFrame.getsize() abfragen.
    Das mit der Auflösung stimmt, und daran hatte ich bisher nicht gedacht. Du wirst wohl nach dem pack() die Größe bestimmen müssen und dann über Math.min(size.width, screensize.width) die Größe entsprechend reduzieren, wenn du das brauchst.

    pack() nutzt zur berechnung wohl die preferredSize des RootPanes des Frames

    Das wird wohl so sein, aber du kannst diese ja dann auch nutzen.


Anmelden zum Antworten