Swing Layouts

tobiant

Mitglied
hey, ich hab ein paar probleme mit den layouts im swing. das fenster soll möglichst ähnlich wie das auf dem foto aussehen.
unbenanntxvk.png

nehm ich gridlayout für mein westpanel, ist alles total verzogen. bei flowlayout stehts nebeneinander...
wie mach ichs vernünftig? und wie mach ich diesen rahmen in dem "Gruppenzuteilung" steht?
pw:das panel auf der rechten seite lass ich erstmal außen vor.

Java:
package gui;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;

/**
 * Die GUI für die Zuteilungsoptionen.
 */
public class Swing {

    /**
     * Enthält die Gui für Zuteilungsoptionen, die JListn und die dazugehörigen.
     * Methoden/Algorithmen.
     * @param args shit
     */
    public static void main(String[] args) {
        JFrame frame = new JFrame("Zuteilungsoptionen");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Container pane = frame.getContentPane();
        
        JPanel center = new JPanel(new GridLayout(0, 1));
        JButton beenden = new JButton("Beenden");
        JButton up = new JButton("Hoch");
        JButton down = new JButton("Runter");
        JButton ok = new JButton("OK");
        JButton aehnlich = new JButton("Ähnlich");
        JButton diff = new JButton("Unterschiedlich");
        center.add(up);
        center.add(down);
        center.add(aehnlich);
        center.add(diff);
        pane.add(center, BorderLayout.CENTER);
        
        JPanel west = new JPanel(new GridLayout(2, 1));
        pane.add(west, BorderLayout.WEST);
        final JLabel anzahl = new JLabel("Anzahl:");
        JTextField anzahl1 = new JTextField();
        west.add(anzahl);
        west.add(anzahl1);
        
        final DefaultListModel model1 = new DefaultListModel();
        final JList jlist1 = new JList(model1);
        jlist1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        model1.add(0, "Geografische Herkunft");
        model1.add(0, "Wunschgruppe");
        model1.add(0, "Studiengang");
        model1.add(0, "Semester");
        model1.add(0, "Erfahrung");
        west.add(jlist1);
            
        JPanel south = new JPanel(new GridLayout(1, 2));
        south.add(ok);
        south.add(beenden);
        pane.add(south, BorderLayout.SOUTH);
        ok.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent eee) {
            }
        });
        beenden.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent eee) {
                System.exit(1);
            }
        });
        
        frame.pack();
        frame.setVisible(true);

    }
}

Danke euch.
 
G

Gas

Gast
Wenn es ein standard Layout sein muss: GridBagLayout.
Wenn dir ne Lib nichts ausmacht, würde ich MigLayout (welches ab Java 7 wohl auch fest integriert werden soll) empfehlen.

Und der Rahmen ist ein Titled Border.
 

Guybrush Threepwood

Top Contributor
Ob MigLayout in Java7 dabei sind wird ist - soweit ich weiß - nicht klar. Ein ähnlicher, ebenfalls sehr guter LayoutManager mit der Möglichkeit zum debuggen von Layouts ist JGoodies :: Forms (kann ich sehr empfehlen, ich mache alle meine Layouts mit Forms)
 

tobiant

Mitglied
so, habs in etwa hinbekommen. nu ist meine methode doppelt solang wie zulässig.
das auslagern in andere methoden bereitet mir probleme. wenn ich ein komplettes panel, wie zb west auslagern will meckert er an allen ecken und enden. es passt halt mit dem container, den action listenern un mit den ganzem scheiss eingefüge nicht. was kann ich denn am sinnvollsten auslagern?

Java:
package gui;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.border.TitledBorder;

/**
 * Die GUI für die Zuteilungsoptionen.
 */
public class Swing {

    /**
     * Enthält die Gui für Zuteilungsoptionen, die JListn und die dazugehörigen.
     * Methoden/Algorithmen.
     * @param args shit
     */
    public static void main(String[] args) {
        JFrame frame = new JFrame("Zuteilungsoptionen");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Container pane = frame.getContentPane();

        JPanel center = new JPanel(new GridLayout(4, 1));
        JButton beenden = new JButton("Beenden");
        JButton up = new JButton("Hoch");
        JButton down = new JButton("Runter");
        JButton ok = new JButton("OK");
        JButton aehnlich = new JButton("Ähnlich");
        JButton diff = new JButton("Unterschiedlich");
        center.add(up);
        center.add(down);
        center.add(aehnlich);
        center.add(diff);
        pane.add(center, BorderLayout.CENTER);
        
        JPanel west = new JPanel(new GridBagLayout());
        TitledBorder gruppenborder = new TitledBorder("Gruppenzuteilung");
        pane.add(west, BorderLayout.WEST);
        final JLabel anzahl = new JLabel("Anzahl:  ");
        JTextField anzahl1 = new JTextField(10);
        west.setBorder(gruppenborder);
        west.add(anzahl);
        west.add(anzahl1);

        GridBagConstraints x = new GridBagConstraints();
        x.gridx = 1;
        x.gridy = 3;
        final DefaultListModel model1 = new DefaultListModel();
        JLabel zusatzdaten = new JLabel("Zusatzdaten:");
        final JList jlist1 = new JList(model1);
        GridBagConstraints y = new GridBagConstraints();
        y.fill = GridBagConstraints.HORIZONTAL;
        y.gridx = 1;
        y.gridy = 2;
        GridBagConstraints z = new GridBagConstraints();
        z.gridx = 1;
        z.gridy = 1;
        JLabel space = new JLabel(" ");
        west.add(space, z);
        jlist1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        model1.add(0, "Geografische Herkunft");
        model1.add(0, "Wunschgruppe");
        model1.add(0, "Studiengang");
        model1.add(0, "Semester");
        model1.add(0, "Erfahrung");
        west.add(zusatzdaten, y);
        west.add(jlist1, x);

        up.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                if (jlist1.getSelectedIndex() != 0) {
                Object tmp = model1.get(jlist1.getSelectedIndex());
                Object tmp2 = model1.get(jlist1.getSelectedIndex() - 1);
                model1.set(jlist1.getSelectedIndex(), tmp2);
                model1.set(jlist1.getSelectedIndex() - 1, tmp);
                jlist1.setSelectedIndex(jlist1.getSelectedIndex() - 1);
                } else {
                    Object tmp = model1.get(jlist1.getSelectedIndex());
                    Object tmp2 = model1.get(jlist1.getSelectedIndex() + 4);
                    model1.set(jlist1.getSelectedIndex(), tmp2);
                    model1.set(jlist1.getSelectedIndex() + 4, tmp);
                    jlist1.setSelectedIndex(4);
                }           
            }
        });
        down.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent asd) {
                if (jlist1.getSelectedIndex() != 4) {
                Object tmp = model1.get(jlist1.getSelectedIndex());
                Object tmp2 = model1.get(jlist1.getSelectedIndex() + 1);
                model1.set(jlist1.getSelectedIndex(), tmp2);
                model1.set(jlist1.getSelectedIndex() + 1, tmp);
                jlist1.setSelectedIndex(jlist1.getSelectedIndex() + 1);
                } else {
                    Object tmp = model1.get(jlist1.getSelectedIndex());
                    Object tmp2 = model1.get(jlist1.getSelectedIndex() - 4);
                    model1.set(jlist1.getSelectedIndex(), tmp2);
                    model1.set(jlist1.getSelectedIndex() - 4, tmp);
                    jlist1.setSelectedIndex(0);
                }
            }    
        });
        
        JPanel east = new JPanel(new GridBagLayout());
        TitledBorder teamborder = new TitledBorder("Teamzuteilung");
        pane.add(east, BorderLayout.EAST);
        final JLabel anzahl3 = new JLabel("Anzahl:  ");
        JTextField anzahl4 = new JTextField(10);
        east.setBorder(teamborder);
        east.add(anzahl3);
        east.add(anzahl4);
        final JList jlist2 = new JList(model1);
        jlist2.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        JLabel space2 = new JLabel(" ");
        JLabel zusatzdaten2 = new JLabel("Zusatzdaten:");
        east.add(zusatzdaten2, y);
        east.add(space2, z);
        east.add(jlist2, x);

        JPanel south = new JPanel();
        south.add(ok);
        south.add(beenden);
        pane.add(south, BorderLayout.SOUTH);
        
        ok.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent eee) {
            }
        });
        beenden.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent eee) {
                System.exit(1);
            }
        });
        frame.pack();
        frame.setVisible(true);
    }
}
danke
 

andiv

Bekanntes Mitglied
so, habs in etwa hinbekommen. nu ist meine methode doppelt solang wie zulässig.

Solche Regeln sind ja schön und gut, aber man sollte auch wissen, wann es sinnvoll ist gegen die Regeln zu verstoßen.

Ich würde vorschlagen du ziehst die ganze Logik, d.h. die ActionListener, aus der Methode raus. Dann hast du eine Methode, die für das "Aussehen" zuständig ist und die "Logik" mit den ActionListenern ist an anderer Stelle untergebracht.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Swing: mehrere Layouts verwenden Java Basics - Anfänger-Themen 19
J SWING UI Designer und zeichnen Java Basics - Anfänger-Themen 4
G Maven Swing: Wie verwende ich WindowListener ? Java Basics - Anfänger-Themen 2
C Threads und Swing Java Basics - Anfänger-Themen 9
A Swing: Raumshiff Java Basics - Anfänger-Themen 3
U Warum kriege ich hier eine nullpointer exception, sehe den Fehler nicht (swing) Java Basics - Anfänger-Themen 1
nbergmann Wo ist javax.swing.JOptionPane gespeichert? Java Basics - Anfänger-Themen 4
StevenGG Java swing "New Integer" Java Basics - Anfänger-Themen 5
T Java Swing - Dreieck zeichnen mit verschiedenen Variablen Java Basics - Anfänger-Themen 8
O ImageIcon, Swing Java Basics - Anfänger-Themen 1
O Swing JPanel Java Basics - Anfänger-Themen 4
F Swing - Fehler - Paint Methode Java Basics - Anfänger-Themen 7
M Input/Output Java Swing: Prüft ob Text aus JTextField ausschließlich Integer enthält Java Basics - Anfänger-Themen 15
mobaer Swing Timer stoppen Java Basics - Anfänger-Themen 3
M Wie kann ich hier ein Textfeld hinzufügen Java Swing? Java Basics - Anfänger-Themen 1
M SpielMenü mit Swing Java Basics - Anfänger-Themen 3
M Wie kann ich eine Eingabe im Java-Swing übergeben? Java Basics - Anfänger-Themen 1
N javax swing JOptionPane Hilfe Java Basics - Anfänger-Themen 3
H Swing Button hat falsche Größe Java Basics - Anfänger-Themen 5
C Der Swing Layout-Manager hasst mich Java Basics - Anfänger-Themen 4
M Java swing im Browser starten Java Basics - Anfänger-Themen 0
M JavaFX in Swing-Applikationen einbetten Java Basics - Anfänger-Themen 5
Z Threads SWING mit EventQueue.invokeLater Java Basics - Anfänger-Themen 1
P JDK installieren javac behauptet Javax.swing existiert nicht Java Basics - Anfänger-Themen 8
K Ascii Converter mit Swing Java Basics - Anfänger-Themen 4
b1ck Interface Verständnisfrage zum GUI mit "swing" Java Basics - Anfänger-Themen 1
N Erste Schritte Karte in SWING Application Java Basics - Anfänger-Themen 4
D Mehrfacherfassung in Swing GUI Java Basics - Anfänger-Themen 12
D Datum aus Swing in MySQL DB speichern Java Basics - Anfänger-Themen 22
R warum kann System.out.println(..) etwas, was Swing-Elemente Nicht können ? Java Basics - Anfänger-Themen 11
J Input/Output Charset Swing- Eingaben? Java Basics - Anfänger-Themen 8
S JUnit - Swing- Anwendung wird nicht neu gestartet Java Basics - Anfänger-Themen 0
Q Threads Threads in Swing Anwendungen Java Basics - Anfänger-Themen 5
B Swing intstalliert Eclips{}, mackiert Rot Java Basics - Anfänger-Themen 6
U Java Swing Timer mit ButtonKlick starten u. nach 12 Sekunden Befehl ausführen Java Basics - Anfänger-Themen 7
S Input/Output In Java Swing auf Button warten? Java Basics - Anfänger-Themen 9
N Problem mit Swing Textfeld und Zugriff aus anderer Klasse Java Basics - Anfänger-Themen 6
G Performance - höhere Anzahl Swing Elemente Java Basics - Anfänger-Themen 5
B Java Swing "Zeichenfläche" Java Basics - Anfänger-Themen 1
O Alternative zum swing-Timer Java Basics - Anfänger-Themen 5
F Swing Applet: mehrere Komponenten hinzufügen Java Basics - Anfänger-Themen 1
F Platzieren von Komponenten in Swing Applet funktioniert nicht Java Basics - Anfänger-Themen 3
P Hintergrundbild in Swing einfügen Java Basics - Anfänger-Themen 3
C Swing frage Java Basics - Anfänger-Themen 8
T Rechenprogramm mit Swing Java Basics - Anfänger-Themen 3
K Swing Darstellungsproblem Java Basics - Anfänger-Themen 11
G Verständnisproblem mit swing Java Basics - Anfänger-Themen 6
P Swing - Blackscreen Java Basics - Anfänger-Themen 10
Y Random-Objekt und Swing Java Basics - Anfänger-Themen 4
M Klassen Hilfe bei SWING Java Basics - Anfänger-Themen 5
S GUI Problem: Swing Java Basics - Anfänger-Themen 8
M Javax.swing - Timer(2 Button) Java Basics - Anfänger-Themen 17
J Timer - Swing Java Basics - Anfänger-Themen 5
B Erste Schritte Primefaces -> Swing Gui Java Basics - Anfänger-Themen 7
T Swing, SWT oder JavaFX Java Basics - Anfänger-Themen 8
S Programmoberfläche mit Java-Swing - Herangehensweise Java Basics - Anfänger-Themen 20
E Fragen zu paintXXX in Swing Java Basics - Anfänger-Themen 7
D Erste Schritte bash-Befehl mit Swing ausführen Java Basics - Anfänger-Themen 8
A Alternative zum manuellen Swing programmieren?? Java Basics - Anfänger-Themen 4
S Android fuer Swing-Kenner..? Java Basics - Anfänger-Themen 6
J Swing Timer Java Basics - Anfänger-Themen 3
B Seltsamer Fehler in SWING anwendung Java Basics - Anfänger-Themen 2
D GPS Tracker Swing Java Basics - Anfänger-Themen 2
L Erste Schritte Swing oder SWT Paint mit Grafikkarte? Java Basics - Anfänger-Themen 7
B Einstieg in swing GUI Java Basics - Anfänger-Themen 7
S Swing Eingabe Erzwingen Java Basics - Anfänger-Themen 3
S Swing JTable Java Basics - Anfänger-Themen 7
Z Input/Output Programm mit Swing umsetzen Java Basics - Anfänger-Themen 6
K Eclipse wie Swing per Drag und Drop erstellen Java Basics - Anfänger-Themen 2
V Dropdown Button in einer GUI (Java Swing) Java Basics - Anfänger-Themen 12
S Swing, Gridbaglayout Panel in Panel;funzt nicht!! Java Basics - Anfänger-Themen 3
O swing komponenten werden nicht angezeigt Java Basics - Anfänger-Themen 6
S Swing, Panel über Hintergrundbild!! Java Basics - Anfänger-Themen 6
P Im Fenster bleiben (swing) Java Basics - Anfänger-Themen 16
M Einfacher Swing Wizard Java Basics - Anfänger-Themen 3
E Swing FileWrite?? Java Basics - Anfänger-Themen 3
S Umlaute in Swing-GUI Java Basics - Anfänger-Themen 8
K Drop-down Menü (swing) Java Basics - Anfänger-Themen 4
M Timer-Thread in Swing öffnet jedes Mal ein neues Fenster Java Basics - Anfänger-Themen 6
M Swing Klasse auch per Kommandozeile starten? Java Basics - Anfänger-Themen 2
S JAVA Swing Eventlistener Java Basics - Anfänger-Themen 11
P Swing - Welche Klasse für ausgeben von Ergebnissen? Java Basics - Anfänger-Themen 3
V Swing Componenten werden auf Mac nicht angezeigt Java Basics - Anfänger-Themen 19
J Überfordert mit Swing Java Basics - Anfänger-Themen 5
B Baum > Baum-Swing Java Basics - Anfänger-Themen 4
B Bei Swing weg vom North-West-South-East-Prinzip Java Basics - Anfänger-Themen 2
K Swing Fenster jede sec.neuzeichnen Java Basics - Anfänger-Themen 14
F Werteübergabe in Swing Formularen (gui Builder) Java Basics - Anfänger-Themen 9
L Swing GridBagLayout Java Basics - Anfänger-Themen 3
K Bild als Hintergrund in einem Swing Fenster Java Basics - Anfänger-Themen 21
J unterschied zwischen awt und swing Java Basics - Anfänger-Themen 6
C Swing i.V.m. Threads Java Basics - Anfänger-Themen 2
J XML Viewer for Swing Java Basics - Anfänger-Themen 6
Y Anfänger Hausaufgabe... Swing Java Basics - Anfänger-Themen 6
W Zeichnen in Swing Java Basics - Anfänger-Themen 7
B Swing Applikation mit mehreren Klassen Java Basics - Anfänger-Themen 2
C Swing, Buttons Wert zuweisen Java Basics - Anfänger-Themen 3
Luk10 Swing timer und Threads Java Basics - Anfänger-Themen 4
J Java GUI in Swing und das MVC Paradigma Java Basics - Anfänger-Themen 3
M Swing Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben