layout erstellen

JAVAnnik

Bekanntes Mitglied
Hi,
ich habe ein Problem damit ein Layout für ein Programm zu erstellen. Ich möchte ein Layout erstellen das folgendermaßen aussehen soll:

Ich habe das Frame maximiert, sodass man die Taskleiste noch sieht. Nun versuche ich mit Labels und Panels mein Layout zu gestalten. Ich habe aber das Problem, dass z.B. die obere Leiste meines Programms (mit den button zum minimieren schließen...) auch mitberechnet wird und da sie auf unteschiedlichen computern unterschiedlcih breit ist kann ich keinen bestimmten wert dafür abziehen, sodass ein teil des ersten labels unter ihr verschwindet. Gibt es eine möglichkeit die position anzugeben in der die breite dieser leiste schon berücksichtig wird oder deren breite herauszufinden? Außerdem möchte ich, dass die Größen meiner Felder proportional zum bildschirm bzw. zum frame sind da die taskleiste ja noch zu dehen ist. aber wie finde ich die größe des maximierten frames heraus.

Danke schon mal im Vorraus
 
Zuletzt bearbeitet:

JAVAnnik

Bekanntes Mitglied
ich hab das nicht mit einem Layoutmanager gemacht ich hab mir das einfach im Editor zusammengebastelt womit ich aber nicht so recht zufrieden bin. kann ich in einem LAyoutmanager jedes beliebige Layout erstellen?? ich dachte da wären nur welche vorgegeben wie Grid-, oder borderlayout.
 
C

Camino

Gast
Na ja, es gibt halt mehrere im JDK integrierte LayoutManager, und auch noch einige externe. Diese lassen sich auch ineinander verschachteln. Damit erreicht man meistens bessere Ergebnisse, als mit dem Null-Layout, bei dem alle Komponenten direkt platziert werden.

Ich kenn mich mit den GUI-Editoren nicht so aus, aber es wäre ganz gut, wenn du den Code hier posten könntest, damit man sehen kann, ob und welcher LayoutManager benutzt wurde. Vielleicht kann dann auch eher jemand weiterhelfen, wie das gewünschte Ergebnis erzielt werden kann.
 
C

Camino

Gast
Bei deinem gewünschten Layout würde ich ja auf ein GridBagLayout tippen (auch wenn viele hier davon abraten und andere externe LayoutManager bevorzugen). Mit dem GridBagLayout legst du deine Komponenten in einem Raster an, kannst Zellen verbinden, die Grösse von Spalten und Zeilen bestimmen. Ist halt nicht ganz so einfach, aber wenn man sich da mal weiter reingearbeitet hat, dann kriegt man da auch brauchbare Ergebnisse hin.
 

JAVAnnik

Bekanntes Mitglied
ich habe da null-Layout verwendet und anhand der bildschirmgröße (screensize) die absolute Position und größe ermittelt. nun möchte ich das aber mit einem layoutmanager machen. Ich denke hier bietet sich das Grid-Layout an oder?
Ich hab jedoch keine erfahrung mit Layoutmanagern und wer djetzt mal ein wenig herumprobieren wie ich damit zurechtkomme.
 
C

Camino

Gast
Ich denke hier bietet sich das Grid-Layout an oder?
Bei einem GridLayout hast du auch ein Raster, aber alle Zellen sind gleich gross. Wenn du dein Fenster grösser ziehst, dann ändert sich die Grösse der Zellen auch proportional mit. Aber die Zellen haben trotzdem immer die gleiche Grösse/Proportion. Beim GridBagLayout kannst du die Zellen (Spalten/Zeilen) unterschiedlich festlegen, und auch Zellen miteinader verbinden. Schau mal hier: http://www.java-forum.org/java-faq-beitraege/109289-vorstellung-layoutmanager-standard-java-api.html - eine Übersicht über die LayoutManager.
 

JAVAnnik

Bekanntes Mitglied
danke für den link hab vorhin schnell mal alles überflogen und gridlayout und gridbaglayout in einen topf geworfen. gut dann weiß ich nach was ich suchen muss ... danke
 

JAVAnnik

Bekanntes Mitglied
Hat das überhaupt mit Layout zu tun, oder war die Frage, wie man einen Frame auf die Fenstergröße bringt? (Falls ja: GraphicsConfiguration (Java 2 Platform SE 5.0) ). Ansonsten sollte man sich um irgendwelche Betriebssystem- und L&F-spezifischen Größen nicht so viele Gedanken machen müssen...

Eigentlich waren das zwei fargen: einmal die nach dem layout und die die du meinst.
Wie man ihn auf Fenstergröße bekommt weiß ich ich wollte nur wissen wie ich dann die framegröße herrausfindet weil ich gelesen hab wenn man es mit diesem befehl macht: setExtendedState(MAXIMIZED_BOTH); könnte man die größe des frames nicht mehr herausfinden.
 

Marco13

Top Contributor
Hmja, vom Null-Layout war nicht direkt die Rede, aber von der Taskleiste... ???:L Es klingt wirr...
@JAVAnnik Poste am besten mal ein Stück code...
 

JAVAnnik

Bekanntes Mitglied
@JAVAnnik Poste am besten mal ein Stück code...

Ich hab so gut wie keinen code da ich wusste das diese probleme auftreten ich aber nicht wusste wie ich sie lösen kann. mit dem gridbaglayout scheinen alles probleme gelöst zu sein ich hab das oben skizzirte layout mal mit dem layoutmanager erstellt und es schein alles so weit zu funktionieren. vielen dank :toll::applaus:
 

JAVAnnik

Bekanntes Mitglied
so ich hab nun doch noch eine frage ich habe einen code gefunden fürs gridbaglayout und wollte ihn dahin gehend verändern, dass das layout beim maximieren so aussieht wie die skizze oben. nun habe ich aber noch ein problem und zwar passen sich die unteren zwei zeilen irgendwie immer aneinander an ich hab schon rumprobiert aber nie schaut das so bei mir aus wie oben in der skizze was hab ich falsch gemacht???
ich vermute es liegt vlt. an zeile 42 da war ich mir nicht im klaren was ich dort genau reinschreiben muss.

hier mal der code:
Java:
import java.awt.*;
 import java.util.*;
 import java.applet.Applet;

 public class GridBagEx1 extends Applet {

     protected void makebutton(String name,
                               GridBagLayout gridbag,
                               GridBagConstraints c) {
         Button button = new Button(name);
         gridbag.setConstraints(button, c);
         add(button);
     }

     public void init() {
         GridBagLayout gridbag = new GridBagLayout();
         GridBagConstraints c = new GridBagConstraints();

         setFont(new Font("Helvetica", Font.PLAIN, 14));
         setLayout(gridbag);

         c.fill = GridBagConstraints.BOTH;
         c.weightx = 0.0;
         c.weighty = 0.0;
         makebutton("        ", gridbag, c);
         makebutton("        ", gridbag, c);

         c.gridwidth = GridBagConstraints.REMAINDER; //end r
         c.weightx = 1.0;
         makebutton("", gridbag, c);


         c.weightx = 0.0;      //reset to the default
         c.weighty = 5.0;
         makebutton("", gridbag, c); //another row


         c.weightx = 0.0;      //reset to the default
         c.weighty = 0.0;
         makebutton("", gridbag, c); //another row

         c.gridwidth = 4;
         c.weightx = 1.0;
         c.weighty = 0.0;
         makebutton("", gridbag, c);
         makebutton("", gridbag, c);
         makebutton("", gridbag, c);
         c.gridwidth = GridBagConstraints.REMAINDER; //end row
         makebutton("", gridbag, c);


         c.gridwidth = GridBagConstraints.RELATIVE;
         c.weighty = 4.0;
         c.weightx = 1.0;
         makebutton("", gridbag, c);
         c.weightx = 4.0;
         makebutton("", gridbag, c);

     }

     public static void main(String args[]) {
     Frame f = new Frame("GridBag Layout Example");
     GridBagEx1 ex1 = new GridBagEx1();

     ex1.init();

     f.add("Center", ex1);
     f.pack();
     f.setSize(300,200);
     f.show();
     }
}
 
C

Camino

Gast
Hab ich das nur übersehen, oder hast du nirgendwo gridx und gridy für deine Komponenten festgelegt? Weil damit bestimmst du, wo in das Koordinatensystem die Komponenten reingelegt werden.

Zu Zeile 42: gridwidth bestimmt, über wieviele Spalten deines Gitters die Zelle gehen soll, in der diese Komponente liegt. Wenn du da 4 angibst, dann werden 4 Zellen horizontal miteinander verbunden.
 

JAVAnnik

Bekanntes Mitglied
ok ich hab jetzt folgendes geschrieben und das klappt (hab die buttons in farbige labels eingetauscht):

Java:
c.gridwidth = 1;
         c.weightx = 1.0;
         c.weighty = 0.0;
         makelabel(Color.BLUE, gridbag, c);
         makelabel(Color.GRAY, gridbag, c);
         makelabel(Color.ORANGE, gridbag, c);
         c.gridwidth = GridBagConstraints.REMAINDER; //end row
         makelabel(Color.PINK, gridbag, c);


         c.gridwidth = 1;
         c.weighty = 4.0;
         makelabel(Color.CYAN, gridbag, c);
         c.gridwidth = 3;
         makelabel(Color.BLACK, gridbag, c);

ich verstehe nur nicht warum es einmal gridwidth gibt welches angibt über wie viele spalten eine zele gehen soll und einmal weigthx das glaube ich zumindest das Verhältnis in der breite angibt, außerdem ist mir nicht klar warum sich die einzelnen zeilen gegenseitig beeinflussen ich dachte jede zeile wäre für sich und in jeder zeile könnte man das verhältnis der zellen einstellen. doch stelle ich ein verhältniss ein beeinflusst das auch die darüber liegende zeile???:L???:L
 
C

Camino

Gast
Die Größe einer einzelnen Zelle richtet sich primär nach der PreferredSize (respektive MinimumSize) der in ihr liegenden Komponente. Wenn die Größe des Containers die benötigte Größe über- oder unterschreitet, bestimmt das Gewicht (weightx, weighty), in welchem Verhältnis zueinander die Zellen verkleinert/vergrößert werden.
http://www.java-forum.org/bilder-gui-damit-zusammenhaengt/64702-gridbaglayout.html

Ja, ich glaube weightx und weighty sind die kompliziertesten Werte beim GridBagLayout. Soweit ich das verstanden habe, bestimmen sie die Verteilung des restlichen Platzes und das Verhalten bei der Grössenveränderung des Frames. Normalerweise bewegen sich die Werte zwischen 0.0 und 1.0. Wenn alle Komponenten auf 0.0 gesetzt sind (sowohl weightx als auch weighty), dann ist das Gitter mit allen Zellen zentriert in der Mitte. Ich setz meistens bei der letzten hinzugefügten Komponente die Werte auf 1.0.
 

JAVAnnik

Bekanntes Mitglied
ok also sollte man eigentlich hauptsächlich mit gridx,gridy,gridwidth und heigth arbeiten!?
kann man also wenn ich zb. zwei zellen nebeneinander habe die eine sollt immer gleich groß sein und die andere die größe verändern, nehme ich für die erste dann gridwidth und für die zweite weigthx???
 
C

Camino

Gast
ok also sollte man eigentlich hauptsächlich mit gridx,gridy,gridwidth und heigth arbeiten!?
Na ja, das sind halt die Angaben, in welche Zellen in deinem Gitter deine Komponenten gelegt werden und ob die Zellen über mehrere Zeilen oder Spalten zu einer zusammengefasst werden (ähnlich dem span bei Tabellen in HTML). Das sind halt erstmal die wichtigsten Angaben, um deinem Layout eine Grundstruktur zu geben, wo deine Komponenten angeordnet werden und wie das Gitter aufgeteilt ist.


kann man also wenn ich zb. zwei zellen nebeneinander habe die eine sollt immer gleich groß sein und die andere die größe verändern, nehme ich für die erste dann gridwidth und für die zweite weigthx???
gridtwidth nimmst du ja nur, wenn eine Zelle über mehrere Spalten gehen soll.
 
C

Camino

Gast
Du kannst auch ein Gitter mit 3 Spalten anlegen und über gridx/gridy die 3 Komponenten in die 3 Zellen hinzufügen. Mit gridx=0 und gridy=0 nimmst du die 1. Zelle (oberste Zeile, 1. Spalte) usw.
 

jgh

Top Contributor
... zwei zellen nebeneinander habe die eine sollt immer gleich groß sein und die andere die größe verändern, nehme ich für die erste dann gridwidth und für die zweite weigthx???

dann bekommt die Zelle, die immer gleich groß bleiben soll "
Code:
weightx=0.0;
und die andere [c]weightx=1.0[/c]
 
V

vanny

Gast
Ich denke mal, das lässt sich mit einer Kombination aus verschiedenen LayoutManagern vieleicht in Verbindung mit JSlitPanes eleganter Lösen.
Dadurch bekäme der User noch die Möglichkeit, den für Ihn wichtigen Bereich je nach Bedarf aufzuziehen.

GrußVanny
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P GUI - Layout per Laufzeit erstellen/verändern? Java Basics - Anfänger-Themen 6
J Layout Manager, welcher ist der Richtige für mein Program? Java Basics - Anfänger-Themen 1
J neues Object (JLabel) vorab zum Layout hinzufügen , Location setzen, etc? Java Basics - Anfänger-Themen 2
S setContentView(R.Layout.XXX) wird Rot angezeigt Java Basics - Anfänger-Themen 0
C Erste Schritte Layout an Bildschirmauflösung anpassen Java Basics - Anfänger-Themen 9
N Project layout eclipse ( seperate ordner für klassen ? ) Java Basics - Anfänger-Themen 1
C Der Swing Layout-Manager hasst mich Java Basics - Anfänger-Themen 4
N Erste Schritte JOptionPane - zerstörtes Layout Java Basics - Anfänger-Themen 2
R Card Layout refresh nach Änderung Java Basics - Anfänger-Themen 1
P welche Komponente ist im Layout? Java Basics - Anfänger-Themen 2
F Welchen Layout Manager wählen? Java Basics - Anfänger-Themen 13
Q Layout Manager Java Basics - Anfänger-Themen 6
llabusch Layout neu zeichnen lassen Java Basics - Anfänger-Themen 2
llabusch Interface Layout eines Labels während der Laufzeit ändern Java Basics - Anfänger-Themen 0
T Layout Java Basics - Anfänger-Themen 9
L Anderes Layout für JOptionPane? Java Basics - Anfänger-Themen 6
N Datum abgleichen und Frage zum Layout Java Basics - Anfänger-Themen 3
S Layout mit JPanel in JScrollPanel funktioniert nicht Java Basics - Anfänger-Themen 3
M Text linksbündig im Box'ed Layout Java Basics - Anfänger-Themen 4
M Interface Das Null-Layout Java Basics - Anfänger-Themen 12
B Daten eingeben und ausgeben mit einem Layout Java Basics - Anfänger-Themen 17
L Erste Schritte Layout eines Java Programms Java Basics - Anfänger-Themen 5
P Layout Manager - Welches Layout für Memory? Java Basics - Anfänger-Themen 7
F welches Layout für JButton-Liste verwenden Java Basics - Anfänger-Themen 6
R Welcher Layout Manager-für so ein Fenster? Java Basics - Anfänger-Themen 5
J Unterschiedliche Spaltengröße im Grid(bag)layout Java Basics - Anfänger-Themen 6
M Layout einfach bilden Java Basics - Anfänger-Themen 4
F Card Layout Java Basics - Anfänger-Themen 8
S JButton trotz Box-Layout skalieren Java Basics - Anfänger-Themen 6
L Layout Frage Java Basics - Anfänger-Themen 2
N GUI-Layout-Problem&Anordnung Java Basics - Anfänger-Themen 14
M Frage zu GUI-Layout Java Basics - Anfänger-Themen 4
N Welches Layout soll ich verwenden? Java Basics - Anfänger-Themen 3
W Unterschied JFrame und JLabel bezüglich Layout? Java Basics - Anfänger-Themen 2
N Layout Probleme Java Basics - Anfänger-Themen 2
J Layout bei Swing Java Basics - Anfänger-Themen 4
W Grid Layout wird falsch dargestellt Java Basics - Anfänger-Themen 4
S Layout JDialog Java Basics - Anfänger-Themen 9
T Border Layout alle mittleren felder gleich groß Java Basics - Anfänger-Themen 3
D Der richtige Layout Manager Java Basics - Anfänger-Themen 8
T Eine doofe Frage zum null-Layout-Manager Java Basics - Anfänger-Themen 6
M Layout Probleme Java Basics - Anfänger-Themen 10
T Layout Problem Java Basics - Anfänger-Themen 2
B Frage zum Layout Java Basics - Anfänger-Themen 6
M zufällige auswahl eines Panels aus Grid Layout Java Basics - Anfänger-Themen 3
K Layout Java Basics - Anfänger-Themen 6
J Layout Java Basics - Anfänger-Themen 8
B package org.jdesktop.layout does not exist Java Basics - Anfänger-Themen 8
A center in einer border layout Java Basics - Anfänger-Themen 8
E Layout für Prozentaufteilung Java Basics - Anfänger-Themen 3
kulturfenster Tic Tac Toe Layout-Sorgen Java Basics - Anfänger-Themen 25
A Problem mit BorderLayout und null-Layout Java Basics - Anfänger-Themen 5
N Bildbeispiel von Layout: wie nutze ich das GBLayout dafür? Java Basics - Anfänger-Themen 17
mwildam JToolBar und Group-Layout (NetBeans) dockt nicht richtig an Java Basics - Anfänger-Themen 3
Q Classe durch Buttonklick im Layout öffnen Java Basics - Anfänger-Themen 4
A frames layout Java Basics - Anfänger-Themen 4
G Bilder im Grid-Bag-Layout Java Basics - Anfänger-Themen 2
H Layout wird nicht eingehalten . Java Basics - Anfänger-Themen 3
G Welcher Layout-Manager? *confused* Java Basics - Anfänger-Themen 2
D Layout beim Applet Java Basics - Anfänger-Themen 6
G Layout Java Basics - Anfänger-Themen 3
G Layout Java Basics - Anfänger-Themen 9
U Welches Layout? Java Basics - Anfänger-Themen 6
I Layout anpassen Java Basics - Anfänger-Themen 4
L Layout Problem Java Basics - Anfänger-Themen 2
J Tabelle erneuert bei Card Layout nicht Java Basics - Anfänger-Themen 2
S Layout Probleme (Kein Adden möglich) Java Basics - Anfänger-Themen 18
M ScrollPane Flow Layout Java Basics - Anfänger-Themen 4
P Null Layout Java Basics - Anfänger-Themen 17
R JPanel und Layout Java Basics - Anfänger-Themen 4
Bierhumpen Swing und Layout Java Basics - Anfänger-Themen 18
M JButton im JLabel Layout Java Basics - Anfänger-Themen 12
Z JButton vs Layout Java Basics - Anfänger-Themen 8
E Scrollbar mit NULL- Layout? Java Basics - Anfänger-Themen 4
L Swing - Layout-Problem Java Basics - Anfänger-Themen 12
B Null-Layout oder GridLayout usw. Java Basics - Anfänger-Themen 5
L Layout Java Basics - Anfänger-Themen 5
DEvent anfängerfrage: wieso layout erst beim verändern? Java Basics - Anfänger-Themen 6
XWing Int erstellen lassen? Java Basics - Anfänger-Themen 11
onlyxlia Schlüsselworte Was meint man mit "einen Typ" in Java erstellen? Java Basics - Anfänger-Themen 2
A exe Datei erstellen Java Basics - Anfänger-Themen 8
J Packages erstellen Java Basics - Anfänger-Themen 7
Athro-Hiro Weißes Bild in Java erstellen Java Basics - Anfänger-Themen 3
H Excel-Tabellen mit Java erstellen Java Basics - Anfänger-Themen 4
D MacOS: PDF erstellen geht nicht Java Basics - Anfänger-Themen 1
benny1993 Java Programm erstellen für ein Fußball-Turnier Java Basics - Anfänger-Themen 3
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
P Welches SDK für das erstellen einer ausführbaren Datei? Java Basics - Anfänger-Themen 4
I Klassen von einem package laden, Statisches Feld auslesen und Objekt erstellen Java Basics - Anfänger-Themen 8
C Gewinnspiel erstellen mit Algorithmus Java Basics - Anfänger-Themen 3
Ostkreuz Spielfeld Schatz erstellen Java Basics - Anfänger-Themen 5
I Erste Schritte Einfache Datenbank-Webseite erstellen als Nicht-IT-lerin Java Basics - Anfänger-Themen 24
T Objekte mit arrays erstellen Java Basics - Anfänger-Themen 6
B Klasse statisch erstellen da n-mal geladen Java Basics - Anfänger-Themen 3
laxla123 Dreieck erstellen Java Basics - Anfänger-Themen 1
XWing Random Punkte erstellen mit der Random klasse Java Basics - Anfänger-Themen 15
A Passwort erstellen Java Basics - Anfänger-Themen 3
S CVS erstellen Java Basics - Anfänger-Themen 1
RashAGhul Java Verwaltungstool Erstellen mit kaum Wissen Java Basics - Anfänger-Themen 9
K warum kann ich das Objekt nicht erstellen ? Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben