Axel Richter: Grössen von Swing-Komponenten

Beitrag lesen

Hallo,

wenn ich bei Swing-Komponenten, der in einem LayoutManager platziert wird, die Grösse mit setSize() nicht explizit setze, erhalte ich bei der Abfrage mit getWidth()/getHeight() immer den Wert 0, obwohl der Komponent eine Grösse hat! Kann ich das umgehen und die Grösse trotzdem ermitteln?

Die Methode getPreferredSize() gibt ein Dimension-Objekt mit Breite und Höhe der bevorzugten Komponent-Größe zurück. Das muss aber nicht die Größe sein, welche die Komponente dann durch den Layoutmanager zugewiesen bekommt. Je nach Layoutmanager kann diese Größe aber ermittelt werden. Das FlowLayout kann z.B. nur die PreferredSize nehmen, wenn keine Größe explizit angegeben ist. Das BorderLayout füllt mit den Komponenten allerdings die angegebenen Plätze North, East, South, West und Center aus.

viele Grüße

Axel