Swing und Layout

Status
Nicht offen für weitere Antworten.

Bierhumpen

Bekanntes Mitglied
Hallo,

kann mir einer Mal nen Tipp geben wie man mit Swing ein richtig schönes Layout hinbekommt..

Wie schachtel ich vernünftig... Mit Paneln? Welches Layout(Box~,Flow~, usw.) etc..

bräuchte nur mal ein Tipp wie man das am Besten verwaltet und erstellt!
 

dieta

Top Contributor
Ich bin begeisterter "GridBagLayout"-Nutzer, weil das so schön flexibel ist.
Klar, für ganz einfache Programme (die "nur so nebenbei" programmiert werden) verwende ich auch mal das Flow- oder Border-Layout, aber an sonsten, wenn es gut aussehen soll verwende ich hauptsächlich das GrdBagLayout.
 

SebiB90

Top Contributor
also ein guter LayoutManager ist das TableLayout. In diesem kann man die componente ähnlich wie in html tabellen anordnen. dieses ist aber kein standard layout manager. google mal nach "TableLayout" dann wirste es finden oder versuchs mal auf clearthought.info so heißt jedenfalls das package nur andersrum.
 

Bierhumpen

Bekanntes Mitglied
Gibt es ein Layout in dem man Boxes, Tabellen, oder ähnliches erstellen kann? Wichtig dabei ist, dass man da hoehe und breite angeben kann....
 

L-ectron-X

Gesperrter Benutzer
Die meisten LayoutManager ordnen Komponenten nach einem bestimmten Prinzip an. Dabei werden teilweise auch die Größen der Komponenten angepasst/verändert.
Um hier die richtige Auswahl zu treffen, sollte man schon in etwa wissen, wie es mal aussehen soll und ob und wie die Komponenten bei Änderung der Fenstergröße angepasst werden sollen.
Wenn man LayoutManager durch Verschachtelung von Containern kombiniert, können auch sehr komplexe Layouts hergestellt werden.
Kannst du mal eine Zeichnung ode eine Hardcopy zeigen?
 

dieta

Top Contributor
Höhe und Breite? Wenn du deine Komponenten pixelgenau anordnen willst, setzt du das Layout auf null (setLayout(null)) und rufst dann setBounds(int x, int y, int width, int height) auf:
Code:
    add(komponente1);
    add(komponente2);
    komponente1.setBounds(10, 10, 100, 30);
    komponente2.setBounds(130, 0, 400, 300);
 

Bierhumpen

Bekanntes Mitglied
so soll das aussehen (ist nicht schön, aber die schnellste lösung):
bild.jpg
 

dieta

Top Contributor
Das geht warscheinlich am einfachsten, indem du mehrere Layouts verschaachtelst. Dann kannst du für jeden deiner abgetrennten Bereiche ein JPanel verwenden, welches ein eigenes Layout hat.
So kompliziert wie das Layout, was du willst ist, wäre vielleicht das GridBagLayout ganz hilfreich.
Oder aber du schaust dir mal SebiB90's TableLayout an. Wenn das wirklich so funktioniert wie oben beschrieben ist das sogar noch besser als das GridBagLayout.

Kleiner Tip:
In "Java ist auch eine Insel" ist eine gute Hilfsmethode für die Arbeitserleichterung mit dem GridBagLayout beschrieben:
http://www.galileocomputing.de/openbook/javainsel5/javainsel15_009.htm#Rxx747java15009040005411F04D1F9
 

Bierhumpen

Bekanntes Mitglied
danke für den tipp, aber irgendwie steige ich da nicht durch!

könnte mir jemand ein einfaches beispiel geben? bei dem ich schritt für schritt verstehe was da passiert?
 

André Uhres

Top Contributor
Bierhumpen hat gesagt.:
..aber irgendwie steige ich da nicht durch!..
Hab jetzt nix ausprobiert aber das müsste imho alles mit BorderLayout und FlowLayout zu lösen sein.
Du musst die einzelnen Komponenten nur mit setPreferredSize() richtig dimensionieren .
BorderLayout und FlowLayout sorgen dann schon für die richtige Positionierung.

Nur JFrame wird mit setSize(..) dimensioniert und mit setLocation(..) oder setLocationRelativeTo(null) positioniert.

JPanel und JLabel können zusätzlich mit setBorder(..) umrandet werden.

Beispiel:
JFrame North: add(jPanel1, BorderLayout.NORTH) mit 4 JLabels(oder sind das Buttons?) (Datei,Spiel,Auswertung,Info) und FlowLayout(FlowLayout.LEFT)

JFrame West: add(jPanel2, BorderLayout.WEST)

jPanel2: Standardlayout belassen (=FlowLayout), bekommt 4 JPanels (jPanel21, jPanel22, jPanel23, jPanel24) die jeweils mit setPreferredSize richtig dimensioniert werden.

JPanel21: Standardlayout belassen (=FlowLayout), bekommt JLabels, JComboBoxes, JButtons.
Einfach alle Komponenten in der richtigen Reihenfolge adden und mit setPreferredSize richtig dimensionieren.
FlowLayout macht den Rest.
usw, usw, usw...
Code:
//package layout; 
/* 
* WMTest1.java 
*/ 
import java.awt.*; 
import javax.swing.*; 
public class WMTest1 extends JFrame { 
    public WMTest1() { 
        super("WMTest1"); 
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 
        setSize(700, 700); 
        setResizable(false); 
        setLocationRelativeTo(null); 
        //JComponents erzeugen: 
        menuBar = new JMenuBar(); 
        menuFile = new JMenu(); 
        menuGame = new JMenu(); 
        menuResult = new JMenu(); 
        menuInfo = new JMenu(); 
        jLabel5 = new JLabel(); 
        jPanel2 = new JPanel(); 
        jPanel21 = new JPanel(); 
        jLabel6 = new JLabel(); 
        comboTeam1 = new JComboBox(); 
        jLabel7 = new JLabel(); 
        comboTeam2 = new JComboBox(); 
        btOpen = new JButton(); 
        btSave = new JButton(); 
        btTeam = new JButton(); 
        jPanel22 = new JPanel(); 
        jPanel23 = new JPanel(); 
        jPanel24 = new JPanel(); 
        jPanel3 = new JPanel(); 
        //Layout: 
        menuBar.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0)); 
        menuBar.setBorder(BorderFactory.createLineBorder(Color.black)); 
        menuFile.setHorizontalAlignment(SwingConstants.CENTER); 
        menuFile.setText("Datei"); 
        menuFile.setBorder(BorderFactory.createLineBorder(Color.black)); 
        menuFile.setPreferredSize(new Dimension(87, 25)); 
        menuBar.add(menuFile); 
        menuGame.setHorizontalAlignment(SwingConstants.CENTER); 
        menuGame.setText("Spiel"); 
        menuGame.setBorder(BorderFactory.createLineBorder(Color.black)); 
        menuGame.setPreferredSize(new Dimension(87, 25)); 
        menuBar.add(menuGame); 
        menuResult.setHorizontalAlignment(SwingConstants.CENTER); 
        menuResult.setText("Auswertung"); 
        menuResult.setBorder(BorderFactory.createLineBorder(Color.black)); 
        menuResult.setPreferredSize(new Dimension(87, 25)); 
        menuBar.add(menuResult); 
        menuInfo.setHorizontalAlignment(SwingConstants.CENTER); 
        menuInfo.setText("Info"); 
        menuInfo.setBorder(BorderFactory.createLineBorder(Color.black)); 
        menuInfo.setPreferredSize(new Dimension(88, 25)); 
        menuBar.add(menuInfo); 
        jLabel5.setBorder(BorderFactory.createLineBorder(Color.black)); 
        jLabel5.setPreferredSize(new Dimension(343, 25)); 
        menuBar.add(jLabel5); 
        setJMenuBar(menuBar); 
        jPanel2.setLayout(new FlowLayout(FlowLayout.CENTER, 0, 0)); 
        jPanel2.setPreferredSize(new Dimension(350, 10)); 
        jPanel21.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 20)); 
        jPanel21.setBorder(BorderFactory.createLineBorder(Color.black)); 
        jPanel21.setPreferredSize(new Dimension(350, 150)); 
        jLabel6.setFont(new Font("Tahoma", 1, 12)); 
        jLabel6.setText("Wählen Sie die nächste Begegnung:"); 
        jLabel6.setPreferredSize(new Dimension(320, 20)); 
        jPanel21.add(jLabel6); 
        comboTeam1.setModel(new DefaultComboBoxModel(new String[] { 
            "Item 1", "Item 2", "Item 3", "Item 4" 
        })); 
        comboTeam1.setPreferredSize(new Dimension(140, 22)); 
        jPanel21.add(comboTeam1); 
        jLabel7.setHorizontalAlignment(SwingConstants.CENTER); 
        jLabel7.setText("VS"); 
        jLabel7.setPreferredSize(new Dimension(20, 14)); 
        jPanel21.add(jLabel7); 
        comboTeam2.setModel(new DefaultComboBoxModel(new String[] { 
            "Item 1", "Item 2", "Item 3", "Item 4" 
        })); 
        comboTeam2.setPreferredSize(new Dimension(140, 22)); 
        jPanel21.add(comboTeam2); 
        btOpen.setText("Öffnen..."); 
        btOpen.setPreferredSize(new Dimension(100, 23)); 
        jPanel21.add(btOpen); 
        btSave.setText("Speichern"); 
        btSave.setPreferredSize(new Dimension(100, 23)); 
        jPanel21.add(btSave); 
        btTeam.setText("Team"); 
        btTeam.setPreferredSize(new Dimension(100, 23)); 
        jPanel21.add(btTeam); 
        jPanel2.add(jPanel21); 
        jPanel22.setBorder(BorderFactory.createLineBorder(Color.black)); 
        jPanel22.setPreferredSize(new Dimension(350, 150)); 
        jPanel2.add(jPanel22); 
        jPanel23.setBorder(BorderFactory.createLineBorder(Color.black)); 
        jPanel23.setPreferredSize(new Dimension(350, 100)); 
        jPanel2.add(jPanel23); 
        jPanel24.setBorder(BorderFactory.createLineBorder(Color.black)); 
        jPanel24.setPreferredSize(new Dimension(350, 248)); 
        jPanel2.add(jPanel24); 
        getContentPane().add(jPanel2, BorderLayout.WEST); 
        jPanel3.setLayout(new FlowLayout(FlowLayout.CENTER, 0, 0)); 
        jPanel3.setBorder(BorderFactory.createLineBorder(Color.black)); 
        jPanel3.setPreferredSize(new Dimension(350, 10)); 
        getContentPane().add(jPanel3, BorderLayout.CENTER); 
    } 
    public static void main(String args[]) { 
        new WMTest1().setVisible(true); 
    } 
    private JButton btOpen, btSave, btTeam; 
    private JMenu menuFile, menuGame, menuResult, menuInfo; 
    private JComboBox comboTeam1, comboTeam2; 
    private JLabel jLabel5, jLabel6, jLabel7; 
    private JPanel jPanel2, jPanel21, jPanel22, jPanel23, jPanel24, jPanel3; 
    private JMenuBar menuBar; 
}
 

Bierhumpen

Bekanntes Mitglied
danke, dass habe ich versucht, und es sieht total fürn ar*ch aus! irgendwie passt da was noch nicht
ich versuche es morgen nochmal und melde mich bei problemen!
 

Bierhumpen

Bekanntes Mitglied
hm... wenn ich in den panels das layout auf null mache und die realtiven px angaben mache, sind das dann die angaben bezogen aufs ganze fenster oder im panel?!
 

lin

Top Contributor
brauch n Layout manager, das ist auf jeden fall besser als ein Null Layout....
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Der Swing Layout-Manager hasst mich Java Basics - Anfänger-Themen 4
J Layout bei Swing Java Basics - Anfänger-Themen 4
L Swing - Layout-Problem Java Basics - Anfänger-Themen 12
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
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

Ähnliche Java Themen

Neue Themen


Oben