+ Antworten
Ergebnis 1 bis 4 von 4

Thema: GUI - MIG Layout

  1. #1
    User Bit Themenstarter

    Registriert seit
    19.08.2013
    Fachbeiträge
    4
    Genannt
    0 Post(s)
    Hallo Community,

    ich möchte gerne eine Oberfläche mithilfe des MIG-Layouts zusammenbasteln. Bin mit dem MIG-Layout noch nicht so vertraut..
    Leider entsteht beim Vergrößern des Fensters eine Lücke auf der rechten Seite. Wie im Bild zusehen ist, möchte ich gerne diese Komponenten zentrieren sodass nur links und rechts
    Lücken beim Vergrößern enstehen.

    GUI - MIG Layout-mypanel.png

    Hier ist mein Quellcode zu der GUI:
    Java Code:
    1. package chatClient;
    2.  
    3. import java.awt.BorderLayout;
    4. import java.awt.Color;
    5. import java.awt.Dimension;
    6. import java.awt.Font;
    7.  
    8. import javax.swing.JButton;
    9. import javax.swing.JFrame;
    10. import javax.swing.JLabel;
    11. import javax.swing.JPanel;
    12. import javax.swing.JTextField;
    13.  
    14. import net.miginfocom.swing.MigLayout;
    15.  
    16. public class TestGUI extends JFrame {
    17.    
    18.     public static final Font FONT_HEADER = new Font("Arial", Font.PLAIN, 24);
    19.     public static final Font FONT_NORMAL = new Font("Arial", Font.PLAIN, 18);
    20.    
    21.     public TestGUI() {
    22.         initFrame();
    23.         initFrameContent();
    24.        
    25.         setVisible(true);
    26.     }
    27.    
    28.     private void initFrameContent() {
    29.         JPanel panel = new JPanel();
    30.         panel.setLayout(new MigLayout("insets 0"));
    31.  
    32.         // TOP Panel
    33.         JPanel top = new JPanel();
    34.         top.setBackground(Color.BLACK);
    35.         top.setLayout(new MigLayout());
    36.        
    37.         JLabel title = new JLabel("Top Panel");
    38.         title.setForeground(Color.WHITE);
    39.         title.setFont(FONT_HEADER);
    40.         top.add(title, "gap top 10, gap bottom 10, span, align center, wrap");
    41.        
    42.         JLabel username = new JLabel("Username: ");
    43.         username.setForeground(Color.WHITE);
    44.         username.setFont(FONT_NORMAL);
    45.         top.add(username, "split, align center");
    46.        
    47.         JTextField fieldUsername = new JTextField(20);
    48.         fieldUsername.setFont(FONT_NORMAL);
    49.         top.add(fieldUsername, "growx, pushx,  align center");
    50.        
    51.         JLabel host = new JLabel("Host: ");
    52.         host.setForeground(Color.WHITE);
    53.         host.setFont(FONT_NORMAL);
    54.         top.add(host, "gap left 30, split,  align center");
    55.        
    56.         JTextField fieldHost= new JTextField(20);
    57.         fieldHost.setFont(FONT_NORMAL);
    58.         top.add(fieldHost, "growx, pushx,  align center");
    59.        
    60.         JButton changeHost = new JButton("Change");
    61.         changeHost.setBackground(Color.WHITE);
    62.         changeHost.setFont(FONT_NORMAL);
    63.         changeHost.setFocusPainted(false);
    64.         top.add(changeHost, "gap left 20");
    65.        
    66.         panel.add(top, "span, wrap");
    67.        
    68.         // TODO CENTER PANEL
    69.         // TODO BOTTOM PANEL
    70.        
    71.         this.add(panel);
    72.     }
    73.    
    74.     private void initFrame() {
    75.         this.setTitle("GUI");
    76.         this.setSize(800, 600);
    77.         this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    78.         this.setResizable(true);
    79.         this.setMinimumSize(new Dimension(600, 400));
    80.         this.setLocationRelativeTo(null);
    81.         this.setLayout(new BorderLayout());
    82.     }
    83.    
    84.     public static void main(String[] args) {
    85.         new TestGUI();
    86.     }  
    87. }

  2. #2
    Global Moderator Viertel Gigabyte Avatar von SlaterB
    Registriert seit
    06.08.2008
    Fachbeiträge
    2.699
    Genannt
    276 Post(s)
    kurzer Blick ins Layout, in die Befehle,
    ich tippe auf:

    > panel.add(top, "span, wrap");

    hier muss noch ein grow rein?

    edit:
    aber das würde wohl alles mehr ausbreiten, kein Rand links/ rechts
    ob es für Rand links/ rechts was fertiges gibt? kann ich nun leider nicht sagen,
    wenn innerhalb von top gelöst, ist das grow für top wohl dennoch nötig,

    sonst evtl. top in eine Zeile mit links und rechts leeres Label, diese beiden bekommen grow, top nicht..,
    oder etwas mit 'center' für top?
    Hansa wird Meister

  3. Es bedanken sich:
    GreenTigerEye (27.11.2016)
  4. #3
    User Halbes Megabyte Avatar von Crian
    Registriert seit
    02.08.2013
    Fachbeiträge
    542
    Genannt
    31 Post(s)
    Generell empfehle ich Layouts durch die Verschachtelung einfacher Layouts zu erreichen (etwa BorderLayout), anstatt alles auf einen Schlag in einem komplexeren Layout machen zu wollen. Meist lassen sich Anordnungsprobleme dann leicht lokalisieren und dort recht einfach beheben, ohne eventuell alles andere zu beeinflussen.

  5. #4
    User Bit Themenstarter

    Registriert seit
    19.08.2013
    Fachbeiträge
    4
    Genannt
    0 Post(s)
    @SlaterB Danke das mit den Labels hat funktioniert. Habe aber stattdessen JPanels genommen. Auch wenn es sicherlich keine schöne Variante ist es so zu umgehen.
    @Crian Das war auch nur zur Testzwecken gedacht. Habe noch nie wirklich mit dem MIG-Layout gearbeitet und wollte eine GUI mal komplett mit dem MIG-Layout gestalten..

+ Antworten Thema als "offen" markieren

Direkt antworten Direkt antworten

Wie viele Beine hat eine Kuh? (Zahlwort)

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. Welches Layout am besten für dieses Layout ?
    Von dehlen im Forum AWT, Swing, JavaFX & SWT
    Antworten: 8
    Letzter Beitrag: 08.11.2013, 16:17
  2. store layout
    Von mr.unbekannt im Forum DockingFrames
    Antworten: 7
    Letzter Beitrag: 04.10.2011, 22:24
  3. Problem with layout
    Von Maxim im Forum DockingFrames
    Antworten: 6
    Letzter Beitrag: 21.06.2011, 08:20
  4. Layout and position
    Von harringf im Forum DockingFrames
    Antworten: 3
    Letzter Beitrag: 20.11.2010, 05:32
  5. Questions to Layout (Menu) and Saving the Layout
    Von PeterM im Forum DockingFrames
    Antworten: 3
    Letzter Beitrag: 31.03.2010, 18:40

Berechtigungen

  • Neue Themen erstellen: Ja
  • Themen beantworten: Ja
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •