Jetzt lerne ich Java 6

Layout-Manager verwenden

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Ein LayoutManager hilft dem Programmierer beim Gestalten von Oberflächen, indem er nach vorgegebenen Regeln automatisch zur Laufzeit die Komponenten platziert.
09:52

Transkript

In diesem Kapitel möchte ich mich gerne mit den sogenannten Layoutmanagern von AWT beschäftigen. Was ist ein Layoutmanager? Um zu verstehen, welche Aufgabe ein Layoutmanager hat, müssen wir uns klar machen, wie Komponenten auf einer Applikationsseite abgebildet werden. Grundsätzlich werden Komponenten, wie zum Beispiel Knöpfe, Textfelder oder Labels einem sogenannten Container hinzugefügt. Das haben Sie bereits selbst gemacht. In dieser Datei hier ist zum Beispiel "Frame" unser Container. In diese Datei hier ist zum Beispiel das AWT-Layout von Frame abgeleitet und damit unser Container von Typ - Frame. Es gibt auch noch weitere Container, die wir bereits kennengelernt haben. Zum Beispiel, Window und auch Perl. Zugefügt werden diese Komponenten über die Methode "Add". Hier füg' ich, zum Beispiel, Knöpfe dem Container hinzu. Bis jetzt haben wir uns noch nicht über die Positionierung der Knöpfe innerhalb einer Oberfläche Gedanken gemacht. Das hat für uns bis jetzt bereits ein Layoutmanager getan. Für was braucht man nun Layoutmanager? Hierzu ein Beispiel: Sie haben ein Formular entwickelt. Auf diesem Formular befinden sich Labels, also Beschriftungen, und natürlich Textfelder. Jetzt vergrößert oder verkleinert der Benutzer das Fenster. Wie sollen sich die Elemente nun verhalten? Brechen diese um? Oder werden diese verdeckt? Werden Scrollbalken angezeigt oder nicht? Ein weiteres Beispiel zur Verdeutlichung: Sie haben neben dem Textfeld natürlich ein Label stehen. Jetzt wird diese Applikation lokalisiert. Das bedeutet, in eine andere Sprache übersetzt. Die Länge des Labels ändert sich. Wie stellen Sie sicher, dass das Textfeld nicht die längere Beschriftung verdeckt? Für all diese Dinger sind Layoutmanager gut. Ich werde in diesem Kapitel nur einige Layoutmanager des AWT vorstellen. Natürlich finden Sie in der Dokumentation weitere Informationen darüber und auch Swing bringt selbst noch einige neue Layoutmanager mit sich. Grundsätzlich ist es so, dass jede Container-Klasse defaultmäßig einen Layoutmanager eingestellt hat. Beim Perl ist das das FlowLayout und beim Frame ist es das BorderLayout. Möchten Sie dieses Layout gerne ändern? - Müssen Sie die Methode "setLayout" verwenden. Wie wir das hier in diesem Beispiel auch tun. Zu diesem Beispiel kurz die Erklärung. Ich leite hier von Frame eine Klasse AWT_Layout ab. Dann habe ich hier oben mit ein Array geschaffen, das 10 Buttons aufnehmen kann. Anschließend wähle ich für mein AWT_Layout das FlowLayout aus. Dieses werden wir gleich noch etwas näher betrachten. Anschließend rufe ich per Schleife 10 Buttons ins Leben, die ich in das Array ablege, und gleichzeitig auch hier meine Container-Klassen hinzufüge. Das war's. Schauen wir uns das Ganze nun mit dem FlowLayout an. Sie sehen, die Buttons sind im Moment alle in Reih und Glied. Je nachdem, wie ich jetzt mein Fenster verändere, werden die Buttons umgebrochen und sind im Fenster optimal sichtbar. Schauen wir uns jetzt nun die einzelnen Argumente etwas näher an. Bei der Anwendung des FlowLayouts generiert man hier ein neues FlowLayout, in dem man eine neue Instanz schafft. Da wir dieses FlowLayout lediglich zum Setzen des Layoutmanagers hier benötigen, mache ich es anonym. Das bedeutet, ich belege überhaupt keine Instanzvariablen an dieser Stelle. Über die Methode "setLayout". Diese Methode gehört zu Frame und damit auch zur abgeleiteten Instanz AWT_Layout. Setze ich diesen Layoutmanager. Schauen wir uns das Ganze noch einmal etwas näher an. Beim FlowLayout werden alle Komponenten von links nach rechts und von oben nach unten angeordnet. Dabei werden die Komponenten auf jeden Fall zuerst einmal zentriert. Zwischen den einzelnen Komponenten entsteht ein kleiner Abstand von 5 Pixel. Diesen kann man übrigens über einen speziellen Konstruktor des FlowLayouts ändern. Hierzu sei auf die Doku verwiesen. Der nächste Layoutmanager, den wir uns anschauen möchten, ist das sogenannte "GridLayout". Beim GridLayout kommt es natürlich darauf an, mit welchem Konstruktor wir dieses initialisieren. Ich habe in unserem Beispiel hier jetzt einfach mal ein GridLayout ohne Übergabeparameter initialisiert. Anschließend lass' ich diese Klasse ausführen. Sie sehen hier ein typisches GridLayout. Beim GridLayout wird die gesamte zur Verfügung stehende Breite in gleichmäßige Spalten aufgeteilt. Jede Spalte ist gleich breit. Zusätzlich können Sie sogar Zeilen und Spalten definieren. Das wird im Konstruktor festgelegt. Hierbei ist jedoch wichtig, dass wenn Sie eine gewisse Anzahl von Zeilen vorgeben, die Spaltenzahl entsprechend den übrigen Komponenten gesetzt wird. Möchten Sie gerne Spalten vorgeben, müssen Sie dann die Zeilenzahl auf Null lassen. Null bedeutet: schau, dass du mit den Spalten hinkommst und die Zeilen entstehen wiederum aus der Anzahl der Komponenten. Wenn Sie möchten, können Sie auch wieder einen Abstand einfügen. Das möchte ich hier schnell noch tun, indem ich den passenden Konstruktor wähle. Ich gebe zum Beispiel vor, dass ich gerne drei Zeilen hätte. Die Spaltenzahl ist nun soweit egal. Und ich möchte gerne 10 mal 10 Pixel Abstand haben. Dies ist das Ergebnis. Sie sehen meine drei Zeilen. Die Spaltenzahl wurde errechnet aus der Anzahl der Komponenten, die noch übrig ist. Wenn ich also drei Zeilen habe, verteilt sich das Ganze so. Und ich habe einen 10 mal 10 pixelbreiten Abstand. Um nähere Informationen zu diesem Layoutmanager zu haben, auch hier wieder in der Doku nachlesen. Hier jetzt folgende Layoutmanager nennt sich "BorderLayout". Hierfür habe ich eine andere Datei generiert. Schauen wir uns diesen zuerst einmal in der Praxis an. Unser Container, hier - dieses Fenster, wurde automatisch in fünf Bereiche eingeteilt. Der obere Bereich hier nennt sich NORDEN, SÜDEN, OSTEN und WESTEN, und in der Mitte - das nennt sich einfach CENTER. Passend werden dann entsprechend die einzelnen Komponenten positioniert. Grundsätzlich ist das BorderLayout das voreingestellte Layout für abgeleitete Klassen von Frame. Schauen wir uns das Ganze jetzt beim Implementieren an. Ich habe hier BorderLayout entsprechend eingestellt. Auch hier gibt es verschiedenste Konstruktoren, zum Beispiel, auch um Abstände einzustellen. Die einzelnen Elemente werden mit der Methode "Add" einfach hinzugefügt. Dabei wird an zweiter Stelle als zweiter Parameter eine Positionierungsinformation mitgegeben. Diese ist eine Konstante aus dem BorderLayout. Und diese sind genauso benannt, wie die einzelnen Felder: NORTH, EAST, SOUTH WEST und CENTER. Mehr Informationen finden Sie ebenfalls wieder in der Doku. Der letzte Layoutmanager, den ich Ihnen gerne vorstellen möchte, ist das sogenannte "NullLayout". Das bedeutet, Sie setzen ganz bewusst mit der Methode setLayout Ihren Layoutmanager auf Null. Anschließend haben Sie die Möglichkeit, selbst über Positionsangaben und Dimensionsangaben die Größe der einzelnen Komponenten sowie auch die Anordnung selbst zu bestimmen. Jede der Komponenten besitzt Methoden, um die Größe oder auch die BoundBox zu setzen. Mit der Methode "setBounds", zum Beispiel, setzen Sie die X und die Y Position der linken oberen Ecke, und dann die Breite in der X-Achse und die Höhen in der Y-Achse. Ähnlich verhält sich die Methode "setSize", womit jetzt ich hier unten, zum Beispiel, das Fenster sich in seiner Größe ändere: Auf einer X-Dimension von 300 und Y-Dimension von 150. Dadurch können Sie dann komplett Ihr Fenster selbst gestalten und sind völlig frei. Ich kann Ihnen das hier einfach mal zeigen, indem ich das Ganze speichere und anzeigen lasse. Ich habe also jetzt hier einfach diese Elemente innerhalb des Containers über setBounds, und, wie gesagt, das Fenster selbst über setSize positioniert. Das NullLayout ist auch eines der typischen Layouts, die Sie benutzen, wenn Sie einen grafischen Editor, wie zum Beispiel innerhalb von Eclipse, mit dem wir schon Editor nutzen, oder auch Editoren, die andere Entwicklungsumgebungen, wie zum Beispiel der JBuilder oder Netbeans mitbringen. Dann können Sie wirklich ganz komfortabel die Einzelkomponenten schieben, skalieren und solange anordnen, bis Ihnen hier Layout gefällt.

Jetzt lerne ich Java 6

Steigen Sie ein in die Programmierung mit Java 6, lernen Sie die Grundlagen kennen und unternehmen Sie anschließend Ihre ersten Schritte in der objektorientierten Programmierung.

12 Std. 27 min (98 Videos)
Derzeit sind keine Feedbacks vorhanden...

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!