Layoutmanager richtig verwenden?

Status
Nicht offen für weitere Antworten.
C

cobra11

Gast
Hallo zusammen

Die Anfängergrundlagen von der GUI Programmierung hab ich verstanden also Buttons Labels etc. kann ich erstellen und handeln nur bei den Layoutmanagern blick ich nicht durch. Bis jetzt hab ich jedes GUI mit absoluten Werten erstellt, also setLayout(null);

Ich dachte mir vieleicht ist dies nicht ganz professionel und wollte es mal mit den Layout managern versuchen nur krieg ichs irgendwie nicht hin und ich weis auch nicht so richtig bei welcher situation ich welchen Layoutmanager verwenden muss.

Kann man eigentlich beim GridLayout die grösse oder nur die höhe der einzelnen Zellen angeben? oder wie funktioniert dass, wenn ich verschiedene Zeilenhöhen haben möchte oder zb auch mal eine Zeile einfach frei lassen möchte?

zb. möchte ich folgendes GUI erstellen:

Code:
-----------------------------------------------------
| ----------  -------------------------  ---------  |
| | label1 |  | textfield 1           |  |button1|  |
| ----------  -------------------------  ---------  |
|                                                   |
| (10px abstand, evtl. pannel mit anderer farbe)    |
|                                                   |
| ----------  -------------------------  ---------  |
| | label2 |  | textfield 2           |  |button2|  |
| ----------  -------------------------  ---------  |
|                                                   |
|                                                   |
| (40px abstand, evtl. pannel mit anderer farbe)    |
|                                                   |
|                                                   |
|              ---------  ---------                 |
|              |Button3|  |Button4|                 |
|              ---------  ---------                 |
-----------------------------------------------------
-abstände und ausrichtung sollten ca. so sein

Kennt jemand ein gutes Tutorial? oder hat jemand kurz zeit dies zu realisieren oder mir die funktionsweise der Layoutmanager zu erklären? wäre sehr dankbar..
 

hupfdule

Top Contributor
Im Grunde kannst du fast alle LayoutManager vergessen. Einzig brauchbar ist GridBagLayout und selbst das ist aus meiner Perspektive nicht gerade gelungen. Mittlerweile gibt es auch ein SpingLayout, das ist jedoch eher für GUI-Builder gedacht und nicht zum per-Hand programmieren.

Meine Empfehlung: FormLayout
Das ist nicht im SDK enthalten, sondern ein gesondertes Produkt von JGoodies. Im Download-Paket ist auch ein Whitepaper enthalten, das die Grundlagen sehr schön erklärt. Das FormLayout ist mit Abstand das handlichste verfügbare, insbesondere bei komplexen OF-Gestaltungen. Nachteil: Du musst mit deiner Applikation immer auch das entsprechende jar des FormLayouts ausliefern.
 

foobar

Top Contributor
Das ist im Prinzip Erfahrungssache. Probier einfach mal alle Layoutmanager aus, dann wirst du schon sehen welcher LM was kann und wann man ihn am besten einsetzt.
Mein persönlicher Favorit ist Formlayout von JGoodies, aber als Anfänger solltest du erstmal die Standard LMs evaluieren.
 

Wildcard

Top Contributor
André Uhres hat gesagt.:
hupfdule hat gesagt.:
Im Grunde kannst du fast alle LayoutManager vergessen. Einzig brauchbar ist GridBagLayout ..
Wie die meisten Entwickler komme ich sehr gut aus mit BorderLayout, FlowLayout, GridLayout und CardLayout aus.
GridBagLayout brauch ich selten.
Ich schließe mich an. Wenn man die einfachen Layouts verschachtelt kann man eigentlich alles machen.
 
C

cobra11

Gast
Wildcard hat gesagt.:
Ich schließe mich an. Wenn man die einfachen Layouts verschachtelt kann man eigentlich alles machen.

Wie verschahtelt man die Layouts? stellt man da pannels ineinader und jedes bekommt einen eigenen Layoutmanager?

Wenn das so ist, kann ich dann mein GUI so aufbauen?

Aufbau:

1 Zeile: panel1 --> flowlayout --> Inhalt: label1, textfield1, button1
2 Zeile: panel2 --> als abstandhalter
3 Zeile: panel3 --> flowlayout --> Inhalt: label2, textfield2, button2
4 Zeile: panel4 --> als abstandhalter
5 Zeile: panel5 --> Wie bekomme ich die Buttons in die Mitte??
 

André Uhres

Top Contributor
Code:
/* 
* FlowLayoutDemo.java 
*/ 
package layout; 
import java.awt.*; 
import javax.swing.*; 
public class FlowLayoutDemo extends JFrame { 
    public FlowLayoutDemo() { 
        mainPanel = new JPanel(); 
        inputPanel = new JPanel(new FlowLayout(FlowLayout.CENTER,5,3)); 
        fill1 = new JPanel(); 
        fill2 = new JPanel(); 
        jLabel1 = new JLabel("jLabel1"); 
        jTextField1 = new JTextField("jTextField1"); 
        jLabel2 = new JLabel("jLabel2"); 
        jTextField2 = new JTextField("jTextField2"); 
        jButton1 = new JButton("jButton1"); 
        jButton2 = new JButton("jButton2"); 
        jButton3 = new JButton("jButton3"); 
        jButton4 = new JButton("jButton4"); 
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 
        inputPanel.setPreferredSize(new Dimension(300, 200)); 
        jLabel1.setPreferredSize(new Dimension(80, 14));            //jLabel1
        inputPanel.add(jLabel1); 
        jTextField1.setPreferredSize(new Dimension(100, 19));       //jTextField1
        inputPanel.add(jTextField1); 
        jButton1.setPreferredSize(new Dimension(100, 25));          //jButton1
        inputPanel.add(jButton1); 
        fill1.setPreferredSize(new Dimension(290,4));               //fill1
        fill1.setBackground(Color.red);
        inputPanel.add(fill1);
        jLabel2.setPreferredSize(new Dimension(80, 14));            //jLabel2
        inputPanel.add(jLabel2); 
        jTextField2.setPreferredSize(new Dimension(100, 19));       //jTextField2
        inputPanel.add(jTextField2); 
        jButton2.setPreferredSize(new Dimension(100, 25));          //jButton2
        inputPanel.add(jButton2); 
        fill2.setPreferredSize(new Dimension(290,34));              //fill2
        fill2.setBackground(Color.blue);
        inputPanel.add(fill2);
        jButton3.setPreferredSize(new Dimension(100, 25));          //jButton3
        inputPanel.add(jButton3); 
        jButton4.setPreferredSize(new Dimension(100, 25));          //jButton4
        inputPanel.add(jButton4); 
        mainPanel.add(inputPanel); 
        getContentPane().add(mainPanel, BorderLayout.CENTER); 
        setSize(400,300); 
        setLocationRelativeTo(null); 
    } 
    public static void main(String args[]) {new FlowLayoutDemo().setVisible(true);} 
    private JPanel inputPanel, mainPanel, fill1, fill2; 
    private JLabel jLabel1, jLabel2; 
    private JTextField jTextField1, jTextField2; 
    private JButton jButton1, jButton2, jButton3, jButton4;
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
U Breite von Textfeldern trotz Layoutmanager Java Basics - Anfänger-Themen 4
T LayoutManager für Spiele Java Basics - Anfänger-Themen 2
D Methoden Implementieren von einer Zoomfunktion innerhalb eines JPanels mit null-Layoutmanager Java Basics - Anfänger-Themen 1
D 2 Fragen: Position ändern vs. LayoutManager / Bilder einfügen im Vordergrund Java Basics - Anfänger-Themen 3
D Grösse eines JPanel hinsichtlich LayoutManager festlegen Java Basics - Anfänger-Themen 4
M Suche den passenden LayoutManager Java Basics - Anfänger-Themen 4
I eigener "Abstandshalter" vs. LayoutManager Java Basics - Anfänger-Themen 6
J Welchen Layoutmanager nehmen? Java Basics - Anfänger-Themen 4
P Java LayoutManager... Java Basics - Anfänger-Themen 3
A Hilfe mit LayoutManager, Applet zu Applikation umwandeln Java Basics - Anfänger-Themen 13
A RadioButtons in LayoutManager Java Basics - Anfänger-Themen 6
G JLabel mittig ohne LayoutManager Java Basics - Anfänger-Themen 2
kulturfenster jar und LayoutManager Java Basics - Anfänger-Themen 5
G Welchen Layoutmanager verwenden? Java Basics - Anfänger-Themen 7
B Komponenten im LayoutManager zentrieren Java Basics - Anfänger-Themen 5
B LayoutManager Anorden von verschiedenen JPanels Java Basics - Anfänger-Themen 5
J Mit welchem LayoutManager Problem lösen? Java Basics - Anfänger-Themen 2
G LayoutManager kombinieren Java Basics - Anfänger-Themen 2
R LayoutManager Problem Java Basics - Anfänger-Themen 2
T Hilfe bei LayoutManager-Verschachtelung Java Basics - Anfänger-Themen 3
S LayoutManager Java Basics - Anfänger-Themen 15
S welchen layoutmanager Java Basics - Anfänger-Themen 9
G JTable ohne LayoutManager Java Basics - Anfänger-Themen 3
B Mit dem Layoutmanager die Buttongrösse bestimmen Java Basics - Anfänger-Themen 5
C Abbruch einer Schleife mit break, meine Übung funktioniert nicht richtig Java Basics - Anfänger-Themen 4
D Regex greift nicht richtig Java Basics - Anfänger-Themen 4
C Darstellung von Datum - Codes richtig? Java Basics - Anfänger-Themen 2
C Rechnen mit Brüchen, ist meine Lösung soweit richtig? Java Basics - Anfänger-Themen 4
M OOP Brüche nicht richtig berechnen Java Basics - Anfänger-Themen 3
K Hab ich dass so richtig erklärt (Objekte und Referenzen)? Java Basics - Anfänger-Themen 5
I Bild richtig speichern / Hochkant im File Explorer, nach Upload vertikal Java Basics - Anfänger-Themen 9
B Hashmap richtig bauen, die Tripel auf Zahl abbildet? Java Basics - Anfänger-Themen 10
K Warum läuft das Programm nicht(bzw. nicht richtig) Java Basics - Anfänger-Themen 4
K REGEX - Rechnungsbetrag wird nicht richtig ausgelesen. Java Basics - Anfänger-Themen 3
B Semaphoren in Abhängigkeit an Bedingungen richtig setzen Java Basics - Anfänger-Themen 3
berserkerdq2 Habe ich die Aufgabe richtig gelöst? Java Basics - Anfänger-Themen 3
R CSV Reader läuft nicht richtig an Java Basics - Anfänger-Themen 8
E Umlaute und Sonderzeichen werden nach der Build Project nicht richtig angezeigt Java Basics - Anfänger-Themen 2
G jButton führt Main Methode nicht richtig aus Java Basics - Anfänger-Themen 3
G Main Methode wird beim ersten Aufruf nicht richtig ausgeführt Java Basics - Anfänger-Themen 1
milan123 das ist meine aufgabe ich hab das problem das bei mir Wenn ich die Richtung der Linien verändern will und drei davon sind richtig, verändere ich die 4 Java Basics - Anfänger-Themen 3
JensXF Methode überschreiben, so richtig? Java Basics - Anfänger-Themen 4
C Programm das feststellen kann, ob eine eingegebene Zahl einem Schaltjahr entspricht, richtig geschrieben? Java Basics - Anfänger-Themen 11
C Sind die while-Schleifen richtig in for-Schleifen ersetzt worden? Java Basics - Anfänger-Themen 8
S Daten/Klassen/Packages richtig updaten!? Java Basics - Anfänger-Themen 2
L Ist der Code richtig Java Basics - Anfänger-Themen 3
J Wie bestehenden Quellcode in IDE richtig übernehmen Java Basics - Anfänger-Themen 27
F Methoden Methode richtig aufrufen Java Basics - Anfänger-Themen 3
D Klassen Klassendiagramm richtig erstellen Java Basics - Anfänger-Themen 20
J Module richtig einbinden Java Basics - Anfänger-Themen 2
B Sind meine If-Statements richtig angesetzt ? Java Basics - Anfänger-Themen 27
V Boolean Wert nicht richtig erkannt Java Basics - Anfänger-Themen 4
X Wie Generics richtig benutzen ? Java Basics - Anfänger-Themen 5
P Stringbuilder richtig einsetzen Java Basics - Anfänger-Themen 1
T if else Befehl funktioniert nicht richtig Java Basics - Anfänger-Themen 27
A Array richtig füllen Java Basics - Anfänger-Themen 2
S String richtig formatieren Java Basics - Anfänger-Themen 2
P Methoden richtig anwenden Java Basics - Anfänger-Themen 3
O Popoup Menü im JTable richtig anzeigen Java Basics - Anfänger-Themen 6
D Richtig für Programmieren an der UNI lernen Java Basics - Anfänger-Themen 8
X Best Practice Ein int Array richtig mischen Java Basics - Anfänger-Themen 20
D Richtig Vorbereiten auf eine Programmier Klausur Studium. Java Basics - Anfänger-Themen 7
M ObservableList wird nicht richtig geleert Java Basics - Anfänger-Themen 0
T Sortieralgorithmen richtig? Java Basics - Anfänger-Themen 1
X Objekte einer ArrayList richtig ausgeben? Java Basics - Anfänger-Themen 8
S Wie implementiere ich MouseDragged richtig Java Basics - Anfänger-Themen 7
F Konstruktor richtig implementiert? Frage zu Benutzereingaben... Java Basics - Anfänger-Themen 9
I OOP Objektnamen über die Konsole richtig einlesen Java Basics - Anfänger-Themen 9
P Input/Output PQ-Formel wird nicht richtig berechnet Java Basics - Anfänger-Themen 6
P Zeichenkette Zeichen ausschlißen funktioniert nicht richtig Java Basics - Anfänger-Themen 9
H Wie lerne ich Java richtig? Java Basics - Anfänger-Themen 2
N Ich weiß nicht, wie ich meinen Code richtig designen soll und komme nicht weiter Java Basics - Anfänger-Themen 4
B Wie instanzisiert man einen Cursor richtig? Java Basics - Anfänger-Themen 3
J Polymorphie und Dynamisches Binden richtig nutzen Java Basics - Anfänger-Themen 11
N Best Practice Ist die Sortierung richtig? Java Basics - Anfänger-Themen 3
J Erste Schritte Lottozahlen richtig generieren. Java Basics - Anfänger-Themen 12
J Behauptung so richtig? Java Basics - Anfänger-Themen 10
R Listen richtig implementieren Java Basics - Anfänger-Themen 3
B OOP Objekt in IF erzeugen - funktioniert nicht so richtig Java Basics - Anfänger-Themen 11
A Methode richtig überladen Java Basics - Anfänger-Themen 6
H Aufgabe so richtig gelöst? Java Basics - Anfänger-Themen 14
S Code richtig / besser machbar? (Nicht sicher, ob Code selbst falsch ist) Java Basics - Anfänger-Themen 4
W Ist mein Struktogram richtig erstellt worden? Java Basics - Anfänger-Themen 4
L Taschenrechner mit switch und while funktioniert noch nicht richtig Java Basics - Anfänger-Themen 22
U Mehrfach verwendete Sub-Klassen richtig einbinden Java Basics - Anfänger-Themen 4
L Schleife funktioniert nicht richtig Java Basics - Anfänger-Themen 12
Meeresgott OOP Richtig mit java.util.Property umgehen Java Basics - Anfänger-Themen 22
Y Erste Schritte Ich verstehe this. nicht so richtig Java Basics - Anfänger-Themen 5
I Programm von mir - keine Ahnung mehr ob richtig falsch:-( Java Basics - Anfänger-Themen 6
M Abstände richtig wiedergeben Java Basics - Anfänger-Themen 2
S nio move() funktioniert nicht richtig Java Basics - Anfänger-Themen 2
J Timer richtig pausieren Java Basics - Anfänger-Themen 2
B Ist meine Klasse richtig kommentiert? Java Basics - Anfänger-Themen 2
kilopack15 Ist diese setter-Methode richtig? Java Basics - Anfänger-Themen 2
H OOP, wie gehts richtig? (Beispiel von meinem Prof) Java Basics - Anfänger-Themen 6
S Primzahlen berechnen funktioniert nicht richtig Java Basics - Anfänger-Themen 1
kilopack15 Lösungsansatz richtig? Java Basics - Anfänger-Themen 23
Meeresgott OOP Socket Verbindung richtig Kapseln Java Basics - Anfänger-Themen 0
Meeresgott OOP Gui, Logik und Datenbank richtig aufbauen Java Basics - Anfänger-Themen 43
T Datum wird auf der Konsole richtig ausgegeben, aber im Textarea kommt ERROR Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben