Artikel getaggt mit ‘Layout’
Layoutmanager in Java – Teil 2
So, im 2. Teil der Layoutmanager-Serie soll zunächst einmal das GridLayout besprochen werden. Mit diesem Layoutmanager unterteilen wir unser Fenster in gleich große Teile. Beispiel:
frame.setLayout( new GridLayout( 3, 2 ) );
Dies führt zu einer Unterteilung des Fensters in 3 Reihen und 2 Spalten. Werden jetzt Komponenten hinzugefügt, werden die einzelnen Zellen für die ganze Komponente benutzt – sie nimmt also den ganzen Teilbereich ein. „Aufgefüllt“ wird dabei von links nach rechts und anschließend von oben nach unten.
GridLayout ist ein recht einfacher Layoutmanager; allerdings gibt es noch eine Art Erweiterung dazu: das GridBagLayout. Mit diesem Layoutmanager lassen sich die Komponenten nicht nur in gleich großen Zellen platzieren, sondern es können auch andere Dinge bestimmt werden: die Position in der Zelle selbst, die Anzahl der Zellen, die eine Komponente horizontal/vertikal belegen soll, das Verhalten einer Komponente beim vergrößern/verkleinern des Fensters. Dazu bekommt jede Komponente ein GridBagConstraints-Objekt zugewiesen. In der Klasse GridBagConstraints lassen sich nun verschiedene Variablen setzen, die das Verhalten der Komponente bestimmen. An dieser Stelle sei auf das Sun-Tutorial verwiesen: GridBagLayout.
Layoutmanager in Java – Teil 1
In diesem Eintrag sollen 2 Layoutmanager in Java besprochen werden; doch zuerst: wozu braucht man das überhaupt, einen Layoutmanager? Nun, wenn man Komponenten in einem Fenster anordnen möchte, so stellt sich doch die Frage: wie soll das Fenster hinterher aussehen? Wie sollen die Komponenten angeordnet werden? Die simpelste, aber umständlichste Variante:
frame.setLayout( null );
Hier wird garkein Layoutmanager benutzt, alle Komponenten müssen mit setBounds( ); einzeln „gesetzt“ werden.
Ein Layoutmanager kann uns hier nun viel Arbeit abnehmen: wir fügen die Komponenten hinzu, und der Layoutmanager bestimmt dann wie es am Ende aussieht; hierbei können wir unterschiedlich genau Positionen/Größen bestimmen, je nach vewendetem Layoutmanager. In Teil 1 sollen 2 Layoutmanager vorgestellt werden: das BorderLayout (Standardlayout für ein JFrame) und das FlowLayout (Standardlayout für ein JPanel).
Das BoderLayout unterteilt das das Fenster in 5 Teile: NORTH, CENTER, SOUTH, EAST, WEST. Komponenten werden so hinzugefügt:
frame.add( new JButton( "Button 1" ), BorderLayout.NORTH );
Hier wird ein Button im Norden des Frames hinzugefügt; prinzipiell lassen sich natürlich auch andere Komponenten hinzufügen – auch JPanels.
Das FlowLayout ist etwas simpler: Komponenten werden einfach nacheinander hinzugefügt, in einer Reihe von links nach rechts. Die Ausrichtung der Komponenten (z.B. links/rechtsbündig) lässt sich so bestimmen:
FlowLayout layout = new FlowLayout( FlowLayout.RIGHT);
frame.setLayout( layout );
Alle Komponenten in besagtem Frame werden nun also rechtsbündig ausgerichtet.