Appearance
3. Java GUI mit Swing
4
Nachteile von absoluten Layouts #
Was passiert, wenn das Parent Panel nicht immer gleich gross ist?
24.02.2023
3. Java GUI mit Swing
5
Layoutmanager #
Manager | Verhalten |
---|---|
FlowLayout | Platziert Komponenten nebeneinander in Reihen |
BorderLayout | Positioniert die Komponenten an den Fensterseiten |
GridLayout | Positioniert die Komponenten in einem Raster |
GridbagLayout | Flexible Platzierung |
24.02.2023
3. Java GUI mit Swing
11
GridBagLayout #
- Sehr flexibel
- Responsive (Panels können wachsen und schrumpfen)
24.02.2023
3. Java GUI mit Swing
12
GridBagLayout Code #
java
setLayout(new GridBagLayout());
add(bt1, new GridBagConstraints (gridx, gridy, gridwidth,
gridheight, weightx, weighty, anchor, fill, insets,
ipadx, ipady));
24.02.2023
3. Java GUI mit Swing
13
Constraints #
Param | Beschreibung |
---|---|
gridx, gridy | Gibt die Zeile und Spalte der Zelle an. |
gridwidth, gridheight | Gibt die Breite und Höhe in Anzahl Zellen an. |
weightx, weighty | Gibt an, mit welchem Gewicht der horizontale und der vertikale Raum auf die Zellen verteilt wird. |
anchor | Gibt an, wie die Komponente in der Zelle platziert wird. |
fill | Gibt an, wie sich die Komponente der Zelle anpassen soll. |
insets | Gibt an, wieviel Raum in Pixeln, (oben, links, unten, rechts) ausserhalb Komponente hinzugefügt werden soll. Wird mittels new Insets(top, left, bottom, right) erzeugt. |
ipadx, ipady | Gibt an, wieviel Raum innerhalb der Komponenten hinzugefügt werden soll. Links und rechts erscheinen ipadx/2 Pixel, oben und unten erscheinen ipady/2 Pixel. |
24.02.2023
3. Java GUI mit Swing
14
GridBagLayout #
Mit etwas Übung können praktisch alle UI mit GridBagLayout in Code abgebildet werden.
24.02.2023
3. Java GUI mit Swing
Beispiel 1 - Code
19
java
public class MainPanel extends JPanel {
JPanel panel = new JPanel();
JButton button = new JButton("Start");
private final Insets insets = new Insets(5, 5, 5, 5);
JButton bt(String name) {
return new JButton(name);
}
/**
* Run init code here (the view has valid dimensions at this point)
*/
public void init() {
setLayout(new GridBagLayout());
panel.setBackground(Color.DARK_GRAY);
add(panel, new GridBagConstraints(0, 0, 1, 1, 1, 1,
GridBagConstraints.CENTER, GridBagConstraints.BOTH, insets,
0, 0));
add(button, new GridBagConstraints(1, 0, 1, 1, 0, 0,
GridBagConstraints.PAGE_END, GridBagConstraints.NONE,
insets, 0, 0));
}
}
24.02.2023
3. Java GUI mit Swing
Beispiel 2 - Code
24
java
public class MainPanel extends JPanel {
JPanel panel = new JPanel();
JTextField textField = new JTextField();
JButton button = new JButton("Start");
private final Insets insets = new Insets(5, 5, 5, 5);
JButton bt(String name) {
return new JButton(name);
}
public void init() {
setLayout(new GridBagLayout());
panel.setBackground(Color.DARK_GRAY);
add(panel, new GridBagConstraints(0, 0, 1, 1, 1, 1,
GridBagConstraints.CENTER, GridBagConstraints.BOTH, insets,
0, 0));
add(button, new GridBagConstraints(1, 0, 1, 1, 0, 0,
GridBagConstraints.PAGE_END, GridBagConstraints.NONE,
insets, 0, 0));
add(textField, new GridBagConstraints(0, 1, 2, 1, 0, 0,
GridBagConstraints.CENTER, GridBagConstraints.BOTH,
insets, 0, 0));
}
}
24.02.2023