Skip to content
On this page
3. Java GUI mit Swing
1

SWING Graphical User Interface

Objektorientierte Programmierung 2

24.02.2023
3. Java GUI mit Swing
2
24.02.2023
3. Java GUI mit Swing
3

Layout Manager

Absolute Layout

java
public void init() {
    setLayout(null);
}

Komponenten werden mit .setBounds(x, y, w, h) positioniert.

24.02.2023
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

ManagerVerhalten
FlowLayoutPlatziert Komponenten nebeneinander in Reihen
BorderLayoutPositioniert die Komponenten an den Fensterseiten
GridLayoutPositioniert die Komponenten in einem Raster
GridbagLayoutFlexible Platzierung

Layout Managers

24.02.2023
3. Java GUI mit Swing
6

FlowLayout

24.02.2023
3. Java GUI mit Swing
7

BorderLayout

24.02.2023
3. Java GUI mit Swing
8

GridLayout

24.02.2023
3. Java GUI mit Swing
9

GridBag

24.02.2023
3. Java GUI mit Swing
10

Aufbau

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

ParamBeschreibung
gridx, gridyGibt die Zeile und Spalte der Zelle an.
gridwidth, gridheightGibt die Breite und Höhe in Anzahl Zellen an.
weightx, weightyGibt an, mit welchem Gewicht der horizontale und der vertikale Raum auf die Zellen verteilt wird.
anchorGibt an, wie die Komponente in der Zelle platziert wird.
fillGibt an, wie sich die Komponente der Zelle anpassen soll.
insetsGibt 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, ipadyGibt 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
15

Beispiel 1 - Draft

24.02.2023
3. Java GUI mit Swing
16

Beispiel 1 - Draft 2

24.02.2023
3. Java GUI mit Swing
17

Beispiel 1 - Draft 3

24.02.2023
3. Java GUI mit Swing
18

Beispiel 1 - Draft 4

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
20

Beispiel 1 - Final

24.02.2023
3. Java GUI mit Swing
21

Beispiel 2 - Draft 1

24.02.2023
3. Java GUI mit Swing
22

Beispiel 2 - Draft 2

24.02.2023
3. Java GUI mit Swing
23

Beispiel 2 - Draft 3

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
3. Java GUI mit Swing
25

Beispiel 2 - Final

24.02.2023
3. Java GUI mit Swing
26

Anchor in Komponente

24.02.2023
3. Java GUI mit Swing
27

Anchor

24.02.2023