Das Problem mit BorderLayout
und die meisten anderen Layout-Manager wie BoxLayout
oder GridBagLayout
ist, dass sie Lücken zwischen den Komponenten in Pixel eingestellt. Dies ist nicht übertragbar, weil das Layout auf verschiedenen Bildschirmen anders aussieht. Wenn Sie Ihre UI auf einem 19-Zoll-Monitor erstellen, wird es auf einem 32-Zoll-Monitor nicht gut aussehen. Jetzt sprechen wir über Java-Anwendungen, bei denen die Portabilität im Vordergrund steht.
Glücklicherweise können wir mit GroupLayout
oder MigLayout
wirklich portable UI erstellen.
package com.zetcode;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;
import net.miginfocom.swing.MigLayout;
public class MigLayoutTwoButtonsEx extends JFrame {
public MigLayoutTwoButtonsEx() {
initUI();
}
private void initUI() {
JButton btn1 = new JButton("B1");
JButton btn2 = new JButton("B2");
JTextArea area = new JTextArea(15, 28);
area.setBorder(BorderFactory.createEtchedBorder());
createLayout(btn1, btn2, area);
setTitle("MigLayout example");
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void createLayout(JComponent... arg) {
setLayout(new MigLayout("gap 5lp 7lp"));
add(arg[0], "split 2");
add(arg[1], "wrap");
add(arg[2], "push, grow, span");
pack();
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
MigLayoutTwoButtonsEx ex = new MigLayoutTwoButtonsEx();
ex.setVisible(true);
});
}
}
Hier ist ein Beispiel mit dem MigLayout
Manager.
setLayout(new MigLayout("gap 5lp 7lp"));
Wir verwenden logische Pixel, um unsere Lücken zu definieren.
Screenshot:
Danke Berger, das ist was ich brauche, ich habe stundenlang versucht und funktioniert nicht, ich habe ein Borderlayout in meinem Rahmen benutzt und ein Jpanel als Flowlayout um meine Buttons hinzuzufügen, aber wenn ich den Textbereich einfügen will, funktioniert nichts. Aber ich versuche es mit Ihrem Code und läuft. Vielen Dank für Ihre Zeit und Hilfe Jungs, ich schätze wirklich. –
Gern geschehen :) – Berger
Mit 'new EmptyBorder (10, 10, 10, 10)' codierst du den Platzbedarf fest. Dies ist nicht tragbar. –