FlowLayout und
Boxlayout
BoxLayout für einen JFrame setzen
Denkt daran, um einen Layoutmanager eines Containers
auf BoxLayout zu setzen,
müssen wir eine Referenz auf diesen Container an den
Konstruktor übergeben:
BoxLayout(Container contain, int axis)
contain: der Container für diesen Layoutmanager
axis: BoxLayout.X_AXIS ---- Ausrichtung von links nach rechts
BoxLayout.Y_AXIS ---- Ausrichtung von oben nach unten
Ein Problem beim JFrame ist, dass
der Container, der die GUI-Komponenten enthält, der Inhaltsbereich (Content Pane) des Frames ist.
(JFrames bestehen aus mehreren Teilen, um die wir uns gewöhnlicherweise nicht kümmern müssen.)
Um eine Referenz auf den Inhaltsbereich zu bekommen,
verwenden wir die getContentPane() Methode des Frames.
Hier ist, wie wir den Layoutmanager des Frames des vorherigen Beispiels
ändern können:
setLayout( new BoxLayout(getContentPane(), BoxLayout.Y_AXIS) );
add( dataPanel );
add( butPanel );
Das würde keine sichtbaren Auswirkungen auf das Beispielprogramm haben,
es sei denn der Frame wäre um sehr viel breiter.
Ein breiter Frame, der FlowLayout verwendet,
würde dataPanel und butPanel horizontal anordnen.
Ein breiter Frame, der BoxLayout verwendet,
würde butPanel vertikal anordnen.
Hat GUI-Programmierung etwas "Versuch und Irrtum" zu tun?