Professional Documents
Culture Documents
Zusammenfassung (Layouts)
Name: Miriam, Sven, Elias, Enes, Noé, Stefan, Datum: 04.05.18 Kurs IT2 Blatt Nr.: 2/2 Lfd. Nr.: 2
Jan, Leo und Paul.
Das Borderlayout
• Erstellung mehrerer Areale (North, East, West, South und CENTER).
• Ein GUI-Element wird einem Bereich zugeordnet.
• Bei nicht Benutzung eines Areals, wird der nicht verwendete Platz auf die anderen Bereiche
aufgeteilt (Mit Ausnahme von dem Bereich Center).
• Die Buttons werden größer und übernehmen die gesamte Fläche eines Areals.
Die Struktur des Borderlayout ist gut für die oberste Ebene einer Benutzeroberfläche geeignet.
Wenn man ein GUI-Element hinzufügen möchte, muss man dieses nur dem Areal hinzufügen.
Das Cardlayout
• Kartenstapel mit zugehöriger Kartenbox.
• Erstellung des Containers mit Parametern.
• Erstellung der Buttons und ihr Aufenthaltsort.
• Item-Listener erstellen.
• Alle Elemente zu dem Container übergeben.
• Beispiel: Google Maps (allg. Android Applikationen).
Das Cardlayout ist geeignet, wenn man nur ein Fenster angezeigt haben und mit Hilfe eines
Dropdown-Menüs oder per Buttons zur nächsten Karte wechseln möchte.
Das Flowlayout
• Freie Skalierung, individuelle Änderungen.
• Flowlayout.CENTER → zentriert die einzelnen Buttons. (Flowlayout.LEFT, Flowlayout.RIGHT)
• Ordnet alle Komponenten nebeneinander.
• Wenn kein Platz in der Zeile, wird das nächste in der weiteren Zeile überschrieben.
• Bei Veränderung der Größe des Fensters → automatische Anpassung der Zeilenanordnung.
• Eingabe des horizontalen, sowie auch des vertikalen Wertes im Konstruktor.
• Beispiel: Word → Die Icon-Leiste.
Das Flowlayout eignet sich hervorragend, um beispielsweise eine Icon-Leiste anzeigen zu können.
Das GridBagLayout
• Anpassung des Fensters beim verkleinern/vergrößern, mithilfe von Schiebereglern.
• Erstellung eines JFrames und die Angabe der Fenstergröße.
• Mindestabstand, Innenpolsterung der Komp., Verteilung, Skalierung und Anzahl näher def.
Das GridBagLayout könnte man für die Benutzung eines Anmeldefensters implementieren, da man
alles strukturiert anordnen kann (Nickname, Passwort, E-Mail-Adresse).
IT2 Informatik
Zusammenfassung (Layouts)
Name: Miriam, Sven, Elias, Enes, Noé, Stefan, Datum: 04.05.18 Kurs IT2 Blatt Nr.: 2/2 Lfd. Nr.: 2
Jan, Leo und Paul.
Das Boxlayout
• Alle Komponenten (Buttons) sind gleich groß.
• Bei Veränderung der Größe des Fensters → Unflexible Anpassung (Alle Buttons werden nicht
angezeigt.
Das GroupLayout
• Gruppierung der Buttons.
• Gruppen bestehen aus der vertikalen und horizontalen Ebene.
• Parallelität bei den Ebenen (jeder Button hat den gleichen Abstand).
• Getrennte Implementierung der Ebenen.
Wie man im oberen Bild sehen kann, ist das GridBagLayout sehr praktisch für
Eingabefelder, oder wie es auch oft benutzt wird, als anmelde Felder, weil Sie ihre
Größe nicht verändern und immer am gleichen Punkt bleiben.
Hierfür war es Wichtig das man den Buttons eine Koordinate gibt, damit Sie immer
an der gleichen Stelle blieben.
IT Layoutübersicht
Abiturvorbereitung
Namen: Datum: Kurs: Blatt N: 2/8 Lfd. N:
Merthan, Keanu, Sebastian W, Max, 04.05.2018 IT OG6
Norman, Semira, Sebastian H., Andrea,
Jona und Batu
Quellcode:
IT Layoutübersicht
Abiturvorbereitung
Namen: Datum: Kurs: Blatt N: 3/8 Lfd. N:
Merthan, Keanu, Sebastian W, Max, 04.05.2018 IT OG6
Norman, Semira, Sebastian H., Andrea,
Jona und Batu
Das Flow-Layout ist ein Layout-Manager, der allein entscheidet, wo er ein Element anordnet.
man hat keine Möglichkeit der Beeinflsslng.
Dabei geht das Flow Layout ähnlich vor wie eine Textverarbeitung mit Fließtext
jedes Element wird rechts neben das vorher platzierte in eine Zeile gesetzt.
Wenn ein Element keinen Platz mehr hat, wird eine neue Zeile begonnen. Dieses Prinzip gilt auch
während der Laufzeit
an Fensterveränderlngen anpassbar
Mögliche Werte:
1. RIGHT
2. LEFT
3. CENTER
4. LEADING
5. TRAILING
Konstructoren in dem FlowLayout Manager
1. FlowLayout(): erstellt ein Flusslayout mit zentrierter Ausrichtung und einer
standardmäßigen horizontalen und vertikalen Lücke von 5 Einheiten.
3. FlowLayout(int align, int hgap, int vgap): erstellt ein Flusslayout mit der
angegebenen Ausrichtung und der angegebenen horizontalen und vertikalen Lücke
IT Layoutübersicht
Abiturvorbereitung
Namen: Datum: Kurs: Blatt N: 4/8 Lfd. N:
Merthan, Keanu, Sebastian W, Max, 04.05.2018 IT OG6
Norman, Semira, Sebastian H., Andrea,
Jona und Batu
/**
* Create the frame.
*/
public FlowLayoutDemo() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
panel.add(label);
this.add(panel);
}
IT Layoutübersicht
Abiturvorbereitung
Namen: Datum: Kurs: Blatt N: 5/8 Lfd. N:
Merthan, Keanu, Sebastian W, Max, 04.05.2018 IT OG6
Norman, Semira, Sebastian H., Andrea,
Jona und Batu
Anleitung:
Als erstes muss man eine Klasse BorderLayoutDemo erstellen und diese
Klasse erbt von javae.swing.JFrame.
Nun fügen wir den erstellten JPanel zum BorderLayout hinzu. Der nächste
Schritt besteht darin, die JButtons den JPanels hinzuzufügen und mithilfe
von Methoden zu plazieren bzw. ihren Aufenthaltsort zu bestimmen.
Im nächsten Schritt sorgen wir dafür, dass das jPanel zum aktiven,
sichtbaren Inhalt des JFrames gemacht wird.
Mit der Methode “pack();“ kann man die Elemente auf die kleinstmögliche
Größe bringen.
Zuletzt geben wir die Main Methode an und setzen unser BoderLayout auf
visible, also sichtbar.
IT Layoutübersicht
Abiturvorbereitung
Namen: Datum: Kurs: Blatt N: 6/8 Lfd. N:
Merthan, Keanu, Sebastian W, Max, 04.05.2018 IT OG6
Norman, Semira, Sebastian H., Andrea,
Jona und Batu
IT Layoutübersicht
Abiturvorbereitung
Namen: Datum: Kurs: Blatt N: 7/8 Lfd. N:
Merthan, Keanu, Sebastian W, Max, 04.05.2018 IT OG6
Norman, Semira, Sebastian H., Andrea,
Jona und Batu
Man setzt beim GridLayout zuerst mittels Konstruktor die Größe des Feldes
Dann fügt man Elemente mit .add auf den Container hinzu (contentPane)
JPanel contentPane;
}
public GridLayout1337() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new GridLayout(2, 2));
contentPane.add(new JButton("da1"));
contentPane.add(new JButton("da2"));
contentPane.add(new JButton("da3"));
contentPane.add(new JButton("da4"));
setContentPane(contentPane);
}
IT Layoutübersicht
Abiturvorbereitung
Namen: Datum: Kurs: Blatt N: 8/8 Lfd. N:
Merthan, Keanu, Sebastian W, Max, 04.05.2018 IT OG6
Norman, Semira, Sebastian H., Andrea,
Jona und Batu
Code:
Beim BoxLayout Konstruktor legt man die Orientierung für die Reihe der
Elemente fest, die gezeigt werden.
In dem Fall oben: Y-AXIS
[Swing] GroupLayout
Im GroupLayout werden die einzelnen Dimensionen (horizontale/vertikale) unabhängig voneinander definiert. Alle
Komponenten, die mittels GroupLayout angeordnet werden sollen müssen für beide Dimensionen definiert sein.
Ursprünglich wurde das GroupLayout für „GUI builder“ (z.B. die NetBeans IDE) entwickelt, lässt sich aber ebenfalls
händisch programmieren.
Es lässt sich gut zur Anordnung mehrer Komponenten
benutzen, beispielsweise bei der Implementierung eines
Dialogfensters mit mehreren Checkboxen, Eingabefeldern,
usw.
abgebildet: horizontale = sequentielle Gruppe {c1, c2, parallele Gruppe {c3, c4}}
Die vertikale Dimension ist ebenfalls sequentiell mit einer parallelen Gruppe:
vertikale = sequentielle Gruppe {parallele Gruppe{c1, c2, c3}, c4}
Wir erkennen die Hierarchie: Gruppen können einerseits Komponenten, andererseits aber auch weitere Gruppen
enthalten. Das GroupLayout bietet zudem sogenannte „Gaps“ an, dies sind unsichtbare Lücken. Für den Anfang ist es
jedoch am einfachsten, diese Lücken durch die Methoden GroupLayout.setAutoCreateGaps(true) und
GroupLayout.setAutoCreateContainerGaps(true) automatisch generieren zulassen.
Wir beginnen wie üblich damit, die einzelnen Komponenten (z.B. JButton) zu initialisieren, anschließend erstellen wir
das eigentliche GroupLayout mit
GroupLayout groupLayout = new GroupLayout(frame.getContentPane());.
Nun müssen die einzelnen Dimensionen erstellt werden, dies erfolgt durch
groupLayout.setHorizontalGroup(); und groupLayout.setVerticalGroup();.
Die horizontale bzw. vertikale Gruppe muss nun mit Inhalt gefüllt werden, die folgenden Methoden stehen hierbei zur
Verfügung:
GroupLayout.addGroup(GroupLayout.createParallelGroup())
GroupLayout.addComponent(new JButton())
Bei der addGrop Methode wird eine Gruppe – welche mit createParallelGroup bzw. createSequentialGroup erstellt wird
– dem Layout hinzugefügt.
Bei parallelen Gruppen kann außerdem die Ausrichtung bestimmt werden. Beispiel:
GroupLayout.createParallelGroup(GroupLayout.Alignment.CENTER)
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
GroupLayoutExample window = new GroupLayoutExample();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public GroupLayoutExample() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jb1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
jpb.setValue(jpb.getValue()-10);
try {
doc.insertString(doc.getLength(), "withdrawed 10.\n", null);
} catch (BadLocationException e) {
e.printStackTrace();
}
}
});
jb2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
jpb.setValue(jpb.getValue()+10);
try {
doc.insertString(doc.getLength(), "added 10.\n", null);
groupLayout.setAutoCreateGaps(true);
groupLayout.setAutoCreateContainerGaps(true);
groupLayout.setHorizontalGroup(groupLayout.createSequentialGroup()
.addGroup(groupLayout.createParallelGroup(GroupLayout.Alignment.CENTER
)
.addComponent(jpb)
.addGroup(groupLayout.createSequentialGroup()
.addComponent(jb1)
.addComponent(jb2)
)
.addComponent(jsp)
)
);
groupLayout.setVerticalGroup(groupLayout.createSequentialGroup()
.addGroup(groupLayout.createParallelGroup()
.addComponent(jpb)
)
.addGroup(groupLayout.createParallelGroup()
.addComponent(jb1)
.addComponent(jb2)
)
.addComponent(jsp)
);
frame.getContentPane().setLayout(groupLayout);
}
Zuallererst müssen wir zuerst ein Objekt der Klasse CardLayout, dann ein JPanel
instanziieren:
Anschließend fügen wir das JPanel mit CardLayout unserem Hauptframe hinzu.
frame.getContentPane().add(kartenstapelBody);
Nun ist es an der Zeit, die einzelnen „Karten“ zu unserem CardLayout hinzuzufügen.
Hierfür müssen entsprechende JPanels erstellt und mittels JPanel.add(JPanel panel)
hinzufügen.
Das JPanel (hier kartenstapelBody) hält die einzelnen Karten, das CardLayout (hier
kartenstapel) kümmert sich um die Anzeige der entsprechenden Karten.
kartenstapel.previous(kartenstapelBody);
oder
kartenstapel.show(kartenstapelBody, "karte1");
public Example() {
initialize();
}
back.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
kartenstapel.previous(kartenstapelBody);
kartenstapel.show(kartenstapelBody, "karte1");
}
});
forward.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
kartenstapel.next(kartenstapelBody);
}
});
}