PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : GridLayout in einem JFrame



Jor
27-12-2005, 13:32
Hallo zusammen,

eine weitere Frage: Ich möchte das Hauptfenster meiner Anwendung in ein Grid aufteilen, 3 Spalten und 1 Zeile. Dann soll in der ersten Spalte das Objekt jsp (JScrollPane) angezeigt werden und in den Spalten zwei UND drei
das Objekt jpnlSteuerung. Die merkwürdigsten Erscheinungsbilder wurden angezeigt, zum Schluss wurden die gewünschten Objekte gleich gross angezeigt und nicht im Verhältnis 1 zu 2 (Breitenverhältnis).
Ich habe auch schon einiges Ausprobiert und Bücher herangezogen, aber ich komme nicht auf den Fehler.
Hier kommt der Code (in Auszügen):


GridLayout gbl = new GridLayout();
GridBagConstraints gbc = new GridBagConstraints();
cp = getContentPane();
cp.setLayout(gbl);

/*
bla bla bla ...
*/


gbl.setColumns(3);
gbl.setRows(1);

//neueZeile(int hoehe, int breite, int xpos, int ypos, double x_ausdehnung, double y_ausdehnung)
gbc = neueZeile(1,1,0,0,0,0);
gbc.insets = new Insets(0,0,0,0);
cp.add(jsp, gbc);

gbc = neueZeile(1,2,0,1,0,0);
gbc.insets = new Insets(0,0,0,0);
gbc.fill = GridBagConstraints.BOTH;
cp.add(jpnlSteuerung, gbc);


private GridBagConstraints neueZeile(int hoehe, int breite, int xpos, int ypos, double x_ausdehnung, double y_ausdehnung)
{ // Händelt nur die Bereitstellung einer neuen Zeile in den Layout-Manager
GridBagConstraints gbc = new GridBagConstraints();
gbc.insets = new Insets(0, 0, 0, 0);
gbc.fill = GridBagConstraints.BOTH;
gbc.gridwidth = breite;
gbc.gridheight = hoehe;
gbc.gridx = xpos;
gbc.gridy = ypos;
gbc.weightx = x_ausdehnung;
gbc.weighty = y_ausdehnung;
return gbc;
}

( Ist mein erster Gehversuch mit SWING daher :( )

Caveman
27-12-2005, 13:53
Kann es sein, dass Du GridLayout und GridBagLayout etwas vermischst?

Weiterhelfen sollte auch dieser Link hier:
http://www.galileocomputing.de/openbook/javainsel5/javainsel15_009.htm#bild

Jor
27-12-2005, 13:55
Hi Caveman,

jep, mit GridBagLayout hatte ich auch keinen Erfolg. Dann habe ich ein Stück Code ausfindig gemacht, in dem so etwas Ähnlihces umgesetzt wurde, aber ...
Danke für den Link, ich werde hier mal weiter wühlen...

Jor
27-12-2005, 14:22
Hhhmm, :o ,

manchmal liegt die Lösung so nahe... und ist doch soweit weg!
Ich hatte schon zwischen durch den richtigen Ansatz und auch die richtigen
Parameter erstellt und bearbeitet. Aber! Meine Falle war: "double weightx" und "double weighty". Ich hatte beide auf 0 (null) gesetzt, da ich davon ausging, kein zusätzliches Seitenverhältnis erzeugen zu müssen. Ich habe die Werte im Verhältnis 0.3 zu 1.5 gesetzt und schon hatte ich die gewünschte Aufteilung.
Danke und Grüsse nochmal an Caveman und die anderen Leser.