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.
(JFrame
s 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?