Code-Beispiele mit LayoutManager-Kombinationen: Unterschied zwischen den Versionen
K |
K (→Fenster mit BorderLayout und Buttons) |
||
Zeile 59: | Zeile 59: | ||
<syntaxhighlight lang=java> | <syntaxhighlight lang=java> | ||
− | frame.add(createButtonPanel(), BorderLayout.SOUTH); | + | frame.add(createButtonPanel(), BorderLayout.SOUTH); |
</syntaxhighlight> | </syntaxhighlight> | ||
Zeile 67: | Zeile 67: | ||
[[Datei:Standard-Frame_mit_Buttons.png|400px]] | [[Datei:Standard-Frame_mit_Buttons.png|400px]] | ||
+ | |||
+ | Wenn man nun möchte, dass die Buttons nach rechts ausgerichtet werden, braucht nur die Initialisierung des JPanels in der ''createButtonPanel()''-Methode ändern: | ||
+ | |||
+ | <syntaxhighlight lang=java> | ||
+ | JPanel panel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); | ||
+ | <syntaxhighlight> | ||
+ | |||
+ | Die Ausgabe ändert sich dann wie folgt: | ||
+ | |||
+ | [[Datei:Standard-Frame_mit_Buttons_rechts.png|400px]] |
Version vom 7. Mai 2018, 16:08 Uhr
Ausgangspunkt - ein einfaches Fenster
Sehr oft braucht man Fenster für bspw. benutzerdefinierte Dialoge. JFrame
und JDialog
haben bereits von Hause aus ein BorderLayout. Wir brauchen also nicht explizit noch einen LayoutManager setzen.
Hier mal ein JFrame (kein Dialog):
Sehen wir uns an, wie man derartige Dialoge aufbauen kann.
import java.awt.*;
import javax.swing.*;
public class StandardFrame {
public StandardFrame() {
Dimension size = Toolkit.getDefaultToolkit().getScreenSize();
JFrame frame = new JFrame("Standard-Hauptfenster");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.setSize(size.width * 50 / 100, size.height * 50 / 100);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch(Exception e) {
System.err.println(e);
}
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new StandardFrame();
}
});
}
}
Fenster mit BorderLayout und Buttons
Nun möchten wir am unteren Fensterrand ein paar Standard-Buttons unterbringen. Dazu schreiben wir uns eine private Methode, die wir in unsere Klasse StandardFrame einfügen.
private JPanel createButtonPanel() {
JPanel panel = new JPanel();
panel.add(new JButton("Abbrechen"));
panel.add(new JButton("OK"));
return panel;
}
Wenn wir das nun kompilieren und ausführen, werden wir an unserem Fenster keine Veränderung feststellen.
Damit die Buttons auch noch dargestellt werden, fügen wir der Konstruktor-Methode noch den passenden Aufruf nach dem Initialisieren des JFrame und vor der setVisible()-Methode hinzu.
frame.add(createButtonPanel(), BorderLayout.SOUTH);
Damit setzen wir unser Panel mit den Buttons und den unteren Bereich des JFrames.
Das Ergebnis sind dann so aus:
Wenn man nun möchte, dass die Buttons nach rechts ausgerichtet werden, braucht nur die Initialisierung des JPanels in der createButtonPanel()-Methode ändern:
<syntaxhighlight lang=java>
JPanel panel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
<syntaxhighlight>
Die Ausgabe ändert sich dann wie folgt: