zur vorherigen Seite   zum Inhaltsverzeichnis   zur nächsten Seite

Antwort:

FlowLayout und Boxlayout

BoxLayout für einen JFrame setzen

Denken Sie daran, um einen Layoutmanager eines Containers auf BoxLayout zu setzen, müssen Sie 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  ---- für Ausrichtung von links nach rechts
          BoxLayout.Y_AXIS  ---- für Ausrichtung von oben nach unten

Ein Problem, das mit einem JFrame zu tun, ist, das der Container, der die GUI-Komponenten enthält, der Inhaltsbereich (content pane) des Frames ist. (JFrames bestehen aus mehreren Teilen, um die Sie sich gewöhnlicherweise nicht kümmern müssen.) Um eine Referenz auf den Inhaltsbereich zu bekommen, verwenden Sie die getContentPane() Methode des Frames. Hier ist, wie Sie 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 dataPanel und butPanel vertikal anordnen.

FRAGE 18:

Hat GUI-Programmierung etwas "Versuch und Irrtum" zu tun?