Java Swing - Responsive - Welches Layout ist erforderlich?
Und zwar möchte ich gerne, dass die Komponenten im JFrame sich dynamisch zentrieren; ohne, dass dabei die Komponentengröße an sich geändert werden soll.
Wie gehe ich vor? Welches Layout wird benötigt?
1 Antwort
Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
Java
Du kannst ein GridBagLayout verwenden.
Ein Minimalbeispiel dazu:
JFrame frame = new JFrame("Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new GridBagLayout());
JPanel panel = new JPanel();
panel.add(new JLabel("Some text"));
frame.add(panel, new GridBagConstraints());
frame.setSize(500, 500);
frame.setVisible(true);
An der Stelle wird natürlich nur das Panel zentriert.
Wenn du mehrere Elemente in das Panel einfügst, werden diese initial horizontal hintereinander angeordnet. Für eine vertikale Ausrichtung wäre die Angabe eines eigenen BoxLayouts passend.
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
Einzelne Komponenten kannst du nochmals separat explizit zentrieren.
Beispiel für eine horizontale Zentrierung:
label.setAlignmentX(JLabel.CENTER_ALIGNMENT);