PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : GridBagLayout Problem



McSnoop
11-11-2004, 12:30
Das ist die Struktur die rauskommen soll:

----------- ----------- -----------
|Label |Label |Label |
|-----------|-----------|-----------|
|List |List |List |
| | | |
|-----------|-----------|-----------|
|Label|tf |Label|tf |Label|tf |
|-----------|-----------|-----------|
|Label|tf |Label|tf |Label|tf |
|-----------|-----------|-----------|
|List |btn |btn |
| |----------- |-----------|
| |btn |btn |
----------- ----------- -----------

Wenn jemand nen TIP geben könnte, wär das super.

Die Struktur soll auf das MainFrame. Dadrüber ist nur das menü. also wird von der struktur der gesamte restliche platz verwendet.

mfg
Snoop

McSnoop
11-11-2004, 12:30
so ein mist , warum werden keine Leerzeichen akzeptiert???

egal. nochmal im klartext:

3 Spalten:

1. spalte:
5 Zeilen
zeile 3 und 4 nochmals in 2 spalten unterteilt

2. spalte:
7 Zeilen
zeile 3 und 4 nochmals in 2 spalten unterteilt

3. Spalte:
7 Zeilen
zeile 3 und 4 nochmals in 2 spalten unterteilt

mfg
Snoop

peschmae
11-11-2004, 12:42
[ code ] drum hilft bei Leerzeichen

Die Unter-Unterteilung innerhalb des "Hauptgrids" machst du méglicherweise ganz gut mit HBox und VBox (oder heissen die HBoxLayout oder so àhnlich?).

Aber am besten nimmst du fèr so mèhsames Zeugs eh einen GUI-Designer (der mit gridbaglayout umgehen kann)

MfG Peschmà

marius
12-11-2004, 03:29
ja nen guibuilder wuerd ich dir auch vorschlagen.
GANZ besonders beim gridbaglayout!

guck dir mal folgendes an:

http://cloudgarden.com/jigloo/

gruss
marius

dark_red
12-11-2004, 08:29
Mit etwas übung kann man Gridbags auch von Hand schreiben. Einfach bei 2-3 Projekten machen und schon hasst man wieder jeden GUI-Builder. Wenn man in Eclipse noch ein paar Templates macht, dann habe ich zumindest das Gefühl, dass ich schneller als mit einem Builder bin (ausserdem habe ich volle Kontrolle über den Code).

Ansonst alternative Layouts anwenden. Ich nehme am liebsten das von jgoodies.com. Es ist zwar fast so aufwendig wie das Gridbag, aber es ist damit leichter schöne Ergebnisse zu bekommen.



Dein Layout ist irgendwie merkwürdig... Sieht das wirklich so aus?


----------- ----------- -----------
|Label |Label |Label |
|-----------|-----------|-----------|
|List |List |List |
| | | |
|-----------|-----------|-----------|
|Label|tf |Label|tf |Label|tf |
|-----------|-----------|-----------|
|Label|tf |Label|tf |Label|tf |
|-----------|-----------|-----------|
|List |btn |btn |
| |-----------|-----------|
| |btn |btn |
----------- ----------- -----------

McSnoop
12-11-2004, 09:10
jup das layout soll so aussehen. Das tool soll ja keinen schönheitswettbewerb gewinnen, sondern einfach nur funktional sein. *gg*

schon mal thx für eure antworten, werd mich da mal durchwuseln. =)

McSnoop
12-11-2004, 09:18
GANZ besonders beim gridbaglayout!

http://cloudgarden.com/jigloo/


was für sachen kann der denn noch so alles.

Es gibt ja für Eclipse den Visual Editor, was haltet ihr von dem???

mfg
Snoop

McSnoop
12-11-2004, 09:22
des weiteren sollten die Proggies die mit dem Editor erstellt werden auch unter Windows , Linux und Solaris laufen, sprich keine Bindung vorhanden sein an Java 5 oder anderen versionen. Sprich es sollte einem selbst überlassen sein von welcher verseion man das proggie abhängig macht.

hab grad ein wenig gegoogelt und da gibt es ja extrem viele editoren aber bei vielen les ich so nur für windoofs oder auch für linux ab 1.4. So groß aufwendig soll ja die applikation nicht werden aber laufen muss sie unter den 3 oben genannten systemen.

mfg
snoop

peschmae
12-11-2004, 10:56
VE: Hab ihn noch nicht "ernsthaft" benutzt, machte aber einen guten Eindruck. Allerdings sehr lahm.



des weiteren sollten die Proggies die mit dem Editor erstellt werden auch unter Windows , Linux und Solaris laufen, sprich keine Bindung vorhanden sein an Java 5 oder anderen versionen. Sprich es sollte einem selbst überlassen sein von welcher verseion man das proggie abhängig macht.


Die Gui-Builder erstellen dir Code - Swing-Code. Den kompilierst du und das ist dann ein normales Programm. Das "nur Windows" oder so bezieht sich meist auf den GUI-Builder selber und nicht auf die damit erstellten Guis.

Was aber eventuell irgendwo ein kleiner Stolperstein werden könnte ist die Abwärtskompatibilität zu älteren JVMs. D.h. wenn du Programme entwickelst die unbedingt auch unter Java 2 1.3 laufen sollen musst du schon etwas aufpassen (nicht so sehr bei GUIs aber andernorts, manche Klassen (wie z.B. XML-Verarbeitung glaube ich) gibts in Java erst ab Java 2 1.4)

MfG Peschmä

herzberg
13-11-2004, 14:34
Hi
Wenn du dies einfügst, sollte es auf allen Maschinen laufen

JPanel pnPanel0;
JLabel lbLabel0;
JLabel lbLabel1;
JLabel lbLabel2;
JList lsList0;
JList lsList1;
JList lsList2;
JLabel lbLabel3;
JLabel lbLabel4;
JLabel lbLabel5;
JTextField tfText0;
JTextField tfText1;
JTextField tfText2;
JList lsList3;
JButton btBut0;
JButton btBut1;
JButton btBut2;
JButton btBut3;

pnPanel0 = new JPanel();
GridBagLayout gbPanel0 = new GridBagLayout();
GridBagConstraints gbcPanel0 = new GridBagConstraints();
pnPanel0.setLayout( gbPanel0 );

lbLabel0 = new JLabel( "Label 1" );
gbcPanel0.gridx = 0;
gbcPanel0.gridy = 0;
gbcPanel0.gridwidth = 2;
gbcPanel0.gridheight = 1;
gbcPanel0.fill = GridBagConstraints.BOTH;
gbcPanel0.weightx = 1;
gbcPanel0.weighty = 1;
gbcPanel0.anchor = GridBagConstraints.NORTH;
gbPanel0.setConstraints( lbLabel0, gbcPanel0 );
pnPanel0.add( lbLabel0 );

lbLabel1 = new JLabel( "Label 2" );
gbcPanel0.gridx = 2;
gbcPanel0.gridy = 0;
gbcPanel0.gridwidth = 2;
gbcPanel0.gridheight = 1;
gbcPanel0.fill = GridBagConstraints.BOTH;
gbcPanel0.weightx = 1;
gbcPanel0.weighty = 1;
gbcPanel0.anchor = GridBagConstraints.NORTH;
gbPanel0.setConstraints( lbLabel1, gbcPanel0 );
pnPanel0.add( lbLabel1 );

lbLabel2 = new JLabel( "Label 3" );
gbcPanel0.gridx = 4;
gbcPanel0.gridy = 0;
gbcPanel0.gridwidth = 2;
gbcPanel0.gridheight = 1;
gbcPanel0.fill = GridBagConstraints.BOTH;
gbcPanel0.weightx = 1;
gbcPanel0.weighty = 1;
gbcPanel0.anchor = GridBagConstraints.NORTH;
gbPanel0.setConstraints( lbLabel2, gbcPanel0 );
pnPanel0.add( lbLabel2 );

String []dataList0 = { "Chocolate", "Ice Cream", "Apple Pie" };
lsList0 = new JList( dataList0 );
gbcPanel0.gridx = 0;
gbcPanel0.gridy = 1;
gbcPanel0.gridwidth = 2;
gbcPanel0.gridheight = 1;
gbcPanel0.fill = GridBagConstraints.BOTH;
gbcPanel0.weightx = 1;
gbcPanel0.weighty = 1;
gbcPanel0.anchor = GridBagConstraints.NORTH;
gbPanel0.setConstraints( lsList0, gbcPanel0 );
pnPanel0.add( lsList0 );

String []dataList1 = { "Chocolate", "Ice Cream", "Apple Pie" };
lsList1 = new JList( dataList1 );
gbcPanel0.gridx = 2;
gbcPanel0.gridy = 1;
gbcPanel0.gridwidth = 2;
gbcPanel0.gridheight = 1;
gbcPanel0.fill = GridBagConstraints.BOTH;
gbcPanel0.weightx = 1;
gbcPanel0.weighty = 1;
gbcPanel0.anchor = GridBagConstraints.NORTH;
gbPanel0.setConstraints( lsList1, gbcPanel0 );
pnPanel0.add( lsList1 );

String []dataList2 = { "Chocolate", "Ice Cream", "Apple Pie" };
lsList2 = new JList( dataList2 );
gbcPanel0.gridx = 4;
gbcPanel0.gridy = 1;
gbcPanel0.gridwidth = 2;
gbcPanel0.gridheight = 1;
gbcPanel0.fill = GridBagConstraints.BOTH;
gbcPanel0.weightx = 1;
gbcPanel0.weighty = 1;
gbcPanel0.anchor = GridBagConstraints.NORTH;
gbPanel0.setConstraints( lsList2, gbcPanel0 );
pnPanel0.add( lsList2 );

lbLabel3 = new JLabel( "Label 4" );
gbcPanel0.gridx = 0;
gbcPanel0.gridy = 2;
gbcPanel0.gridwidth = 1;
gbcPanel0.gridheight = 1;
gbcPanel0.fill = GridBagConstraints.BOTH;
gbcPanel0.weightx = 1;
gbcPanel0.weighty = 1;
gbcPanel0.anchor = GridBagConstraints.NORTH;
gbPanel0.setConstraints( lbLabel3, gbcPanel0 );
pnPanel0.add( lbLabel3 );

lbLabel4 = new JLabel( "Label 5" );
gbcPanel0.gridx = 2;
gbcPanel0.gridy = 2;
gbcPanel0.gridwidth = 1;
gbcPanel0.gridheight = 1;
gbcPanel0.fill = GridBagConstraints.BOTH;
gbcPanel0.weightx = 1;
gbcPanel0.weighty = 1;
gbcPanel0.anchor = GridBagConstraints.NORTH;
gbPanel0.setConstraints( lbLabel4, gbcPanel0 );
pnPanel0.add( lbLabel4 );

lbLabel5 = new JLabel( "Label 6" );
gbcPanel0.gridx = 4;
gbcPanel0.gridy = 2;
gbcPanel0.gridwidth = 1;
gbcPanel0.gridheight = 1;
gbcPanel0.fill = GridBagConstraints.BOTH;
gbcPanel0.weightx = 1;
gbcPanel0.weighty = 1;
gbcPanel0.anchor = GridBagConstraints.NORTH;
gbPanel0.setConstraints( lbLabel5, gbcPanel0 );
pnPanel0.add( lbLabel5 );

tfText0 = new JTextField( );
gbcPanel0.gridx = 1;
gbcPanel0.gridy = 2;
gbcPanel0.gridwidth = 1;
gbcPanel0.gridheight = 1;
gbcPanel0.fill = GridBagConstraints.BOTH;
gbcPanel0.weightx = 1;
gbcPanel0.weighty = 0;
gbcPanel0.anchor = GridBagConstraints.NORTH;
gbPanel0.setConstraints( tfText0, gbcPanel0 );
pnPanel0.add( tfText0 );

tfText1 = new JTextField( );
gbcPanel0.gridx = 3;
gbcPanel0.gridy = 2;
gbcPanel0.gridwidth = 1;
gbcPanel0.gridheight = 1;
gbcPanel0.fill = GridBagConstraints.BOTH;
gbcPanel0.weightx = 1;
gbcPanel0.weighty = 0;
gbcPanel0.anchor = GridBagConstraints.NORTH;
gbPanel0.setConstraints( tfText1, gbcPanel0 );
pnPanel0.add( tfText1 );

tfText2 = new JTextField( );
gbcPanel0.gridx = 5;
gbcPanel0.gridy = 2;
gbcPanel0.gridwidth = 1;
gbcPanel0.gridheight = 1;
gbcPanel0.fill = GridBagConstraints.BOTH;
gbcPanel0.weightx = 1;
gbcPanel0.weighty = 0;
gbcPanel0.anchor = GridBagConstraints.NORTH;
gbPanel0.setConstraints( tfText2, gbcPanel0 );
pnPanel0.add( tfText2 );

String []dataList3 = { "Chocolate", "Ice Cream", "Apple Pie" };
lsList3 = new JList( dataList3 );
gbcPanel0.gridx = 0;
gbcPanel0.gridy = 3;
gbcPanel0.gridwidth = 2;
gbcPanel0.gridheight = 2;
gbcPanel0.fill = GridBagConstraints.BOTH;
gbcPanel0.weightx = 1;
gbcPanel0.weighty = 1;
gbcPanel0.anchor = GridBagConstraints.NORTH;
gbPanel0.setConstraints( lsList3, gbcPanel0 );
pnPanel0.add( lsList3 );

btBut0 = new JButton( "Button 1" );
gbcPanel0.gridx = 2;
gbcPanel0.gridy = 3;
gbcPanel0.gridwidth = 2;
gbcPanel0.gridheight = 1;
gbcPanel0.fill = GridBagConstraints.BOTH;
gbcPanel0.weightx = 1;
gbcPanel0.weighty = 0;
gbcPanel0.anchor = GridBagConstraints.NORTH;
gbPanel0.setConstraints( btBut0, gbcPanel0 );
pnPanel0.add( btBut0 );

btBut1 = new JButton( "Button 3" );
gbcPanel0.gridx = 2;
gbcPanel0.gridy = 4;
gbcPanel0.gridwidth = 2;
gbcPanel0.gridheight = 1;
gbcPanel0.fill = GridBagConstraints.BOTH;
gbcPanel0.weightx = 1;
gbcPanel0.weighty = 0;
gbcPanel0.anchor = GridBagConstraints.NORTH;
gbPanel0.setConstraints( btBut1, gbcPanel0 );
pnPanel0.add( btBut1 );

btBut2 = new JButton( "Button 2" );
gbcPanel0.gridx = 4;
gbcPanel0.gridy = 3;
gbcPanel0.gridwidth = 2;
gbcPanel0.gridheight = 1;
gbcPanel0.fill = GridBagConstraints.BOTH;
gbcPanel0.weightx = 1;
gbcPanel0.weighty = 0;
gbcPanel0.anchor = GridBagConstraints.NORTH;
gbPanel0.setConstraints( btBut2, gbcPanel0 );
pnPanel0.add( btBut2 );

btBut3 = new JButton( "Button 4" );
gbcPanel0.gridx = 4;
gbcPanel0.gridy = 4;
gbcPanel0.gridwidth = 2;
gbcPanel0.gridheight = 1;
gbcPanel0.fill = GridBagConstraints.BOTH;
gbcPanel0.weightx = 1;
gbcPanel0.weighty = 0;
gbcPanel0.anchor = GridBagConstraints.NORTH;
gbPanel0.setConstraints( btBut3, gbcPanel0 );
pnPanel0.add( btBut3 );

McSnoop
15-11-2004, 09:27
erst mal thx für deine Antwort. Wenn ich das Einfüge und das ganze in ein JFrame packe bleibt es leer.

ich habe hier noch ein Beispiel aber versteh noch nicht warum das funktioniert bzw warum das so gestrickt ist.




......

public LookandFeel(){
super("look and Feel");
setSize(400,200);
addWindowListener(new CloseAdapter()); <----- das wird gebraucht um das Frame zu beenden

JPanel pa = new JPanel();
JPanel pb = new JPanel();

getContentPane().setLayout(new BorderLayout());<----- warum wird hier
getContentPane().add(BorderLayout.CENTER,pa);<----- getContentPane
getContentPane().add(BorderLayout.SOUTH,pb);<------ verwendet???

pa.setLayout(new GridLayout(2,1,10,10));

....... einfügen der komponenten wie buttons usw.

}
......



mfg
Snoop

herzberg
15-11-2004, 14:07
Im Gegensatz zu AWT ist Swing etwas anders aufgebaut. Daher desteht das JFrame aus mehreren Layern. getContentPane() wird benötigt um vom JFrame den zum setzen von Layouts etc. wichigen Layer zu erhalten. Dieser ist ContentPane.

Zum Layout: Wenn du die Attribute in der Klasse definierst und das setzen im Konstruktor funktioniert das einwandfrei!

Ciao

herzberg
15-11-2004, 14:22
Das ist mir schon klar, dass das bei dir nicht funktioniert. Du erzeugst zwar alles nötige, fügst es aber nie ein. Ich habe dir das mal erweitert.


public class MyFrame extends JFrame{
JPanel pnPanel0;
JLabel lbLabel0;
JLabel lbLabel1;
JLabel lbLabel2;
JList lsList0;
JList lsList1;
JList lsList2;
JLabel lbLabel3;
JLabel lbLabel4;
JLabel lbLabel5;
JTextField tfText0;
JTextField tfText1;
JTextField tfText2;
JList lsList3;
JButton btBut0;
JButton btBut1;
JButton btBut2;
JButton btBut3;

MyFrame(){
super("MY PROGRAM");
getContentPane().setLayout(new BorderLayout());

pnPanel0 = new JPanel();
GridBagLayout gbPanel0 = new GridBagLayout();
GridBagConstraints gbcPanel0 = new GridBagConstraints();
pnPanel0.setLayout( gbPanel0 );

lbLabel0 = new JLabel( "Label 1" );
gbcPanel0.gridx = 0;
gbcPanel0.gridy = 0;
gbcPanel0.gridwidth = 2;
gbcPanel0.gridheight = 1;
gbcPanel0.fill = GridBagConstraints.BOTH;
gbcPanel0.weightx = 1;
gbcPanel0.weighty = 1;
gbcPanel0.anchor = GridBagConstraints.NORTH;
gbPanel0.setConstraints( lbLabel0, gbcPanel0 );
pnPanel0.add( lbLabel0 );

lbLabel1 = new JLabel( "Label 2" );
gbcPanel0.gridx = 2;
gbcPanel0.gridy = 0;
gbcPanel0.gridwidth = 2;
gbcPanel0.gridheight = 1;
gbcPanel0.fill = GridBagConstraints.BOTH;
gbcPanel0.weightx = 1;
gbcPanel0.weighty = 1;
gbcPanel0.anchor = GridBagConstraints.NORTH;
gbPanel0.setConstraints( lbLabel1, gbcPanel0 );
pnPanel0.add( lbLabel1 );

lbLabel2 = new JLabel( "Label 3" );
gbcPanel0.gridx = 4;
gbcPanel0.gridy = 0;
gbcPanel0.gridwidth = 2;
gbcPanel0.gridheight = 1;
gbcPanel0.fill = GridBagConstraints.BOTH;
gbcPanel0.weightx = 1;
gbcPanel0.weighty = 1;
gbcPanel0.anchor = GridBagConstraints.NORTH;
gbPanel0.setConstraints( lbLabel2, gbcPanel0 );
pnPanel0.add( lbLabel2 );

String []dataList0 = { "Chocolate", "Ice Cream", "Apple Pie" };
lsList0 = new JList( dataList0 );
gbcPanel0.gridx = 0;
gbcPanel0.gridy = 1;
gbcPanel0.gridwidth = 2;
gbcPanel0.gridheight = 1;
gbcPanel0.fill = GridBagConstraints.BOTH;
gbcPanel0.weightx = 1;
gbcPanel0.weighty = 1;
gbcPanel0.anchor = GridBagConstraints.NORTH;
gbPanel0.setConstraints( lsList0, gbcPanel0 );
pnPanel0.add( lsList0 );

String []dataList1 = { "Chocolate", "Ice Cream", "Apple Pie" };
lsList1 = new JList( dataList1 );
gbcPanel0.gridx = 2;
gbcPanel0.gridy = 1;
gbcPanel0.gridwidth = 2;
gbcPanel0.gridheight = 1;
gbcPanel0.fill = GridBagConstraints.BOTH;
gbcPanel0.weightx = 1;
gbcPanel0.weighty = 1;
gbcPanel0.anchor = GridBagConstraints.NORTH;
gbPanel0.setConstraints( lsList1, gbcPanel0 );
pnPanel0.add( lsList1 );

String []dataList2 = { "Chocolate", "Ice Cream", "Apple Pie" };
lsList2 = new JList( dataList2 );
gbcPanel0.gridx = 4;
gbcPanel0.gridy = 1;
gbcPanel0.gridwidth = 2;
gbcPanel0.gridheight = 1;
gbcPanel0.fill = GridBagConstraints.BOTH;
gbcPanel0.weightx = 1;
gbcPanel0.weighty = 1;
gbcPanel0.anchor = GridBagConstraints.NORTH;
gbPanel0.setConstraints( lsList2, gbcPanel0 );
pnPanel0.add( lsList2 );

lbLabel3 = new JLabel( "Label 4" );
gbcPanel0.gridx = 0;
gbcPanel0.gridy = 2;
gbcPanel0.gridwidth = 1;
gbcPanel0.gridheight = 1;
gbcPanel0.fill = GridBagConstraints.BOTH;
gbcPanel0.weightx = 1;
gbcPanel0.weighty = 1;
gbcPanel0.anchor = GridBagConstraints.NORTH;
gbPanel0.setConstraints( lbLabel3, gbcPanel0 );
pnPanel0.add( lbLabel3 );

lbLabel4 = new JLabel( "Label 5" );
gbcPanel0.gridx = 2;
gbcPanel0.gridy = 2;
gbcPanel0.gridwidth = 1;
gbcPanel0.gridheight = 1;
gbcPanel0.fill = GridBagConstraints.BOTH;
gbcPanel0.weightx = 1;
gbcPanel0.weighty = 1;
gbcPanel0.anchor = GridBagConstraints.NORTH;
gbPanel0.setConstraints( lbLabel4, gbcPanel0 );
pnPanel0.add( lbLabel4 );

lbLabel5 = new JLabel( "Label 6" );
gbcPanel0.gridx = 4;
gbcPanel0.gridy = 2;
gbcPanel0.gridwidth = 1;
gbcPanel0.gridheight = 1;
gbcPanel0.fill = GridBagConstraints.BOTH;
gbcPanel0.weightx = 1;
gbcPanel0.weighty = 1;
gbcPanel0.anchor = GridBagConstraints.NORTH;
gbPanel0.setConstraints( lbLabel5, gbcPanel0 );
pnPanel0.add( lbLabel5 );

tfText0 = new JTextField( );
gbcPanel0.gridx = 1;
gbcPanel0.gridy = 2;
gbcPanel0.gridwidth = 1;
gbcPanel0.gridheight = 1;
gbcPanel0.fill = GridBagConstraints.BOTH;
gbcPanel0.weightx = 1;
gbcPanel0.weighty = 0;
gbcPanel0.anchor = GridBagConstraints.NORTH;
gbPanel0.setConstraints( tfText0, gbcPanel0 );
pnPanel0.add( tfText0 );

tfText1 = new JTextField( );
gbcPanel0.gridx = 3;
gbcPanel0.gridy = 2;
gbcPanel0.gridwidth = 1;
gbcPanel0.gridheight = 1;
gbcPanel0.fill = GridBagConstraints.BOTH;
gbcPanel0.weightx = 1;
gbcPanel0.weighty = 0;
gbcPanel0.anchor = GridBagConstraints.NORTH;
gbPanel0.setConstraints( tfText1, gbcPanel0 );
pnPanel0.add( tfText1 );

tfText2 = new JTextField( );
gbcPanel0.gridx = 5;
gbcPanel0.gridy = 2;
gbcPanel0.gridwidth = 1;
gbcPanel0.gridheight = 1;
gbcPanel0.fill = GridBagConstraints.BOTH;
gbcPanel0.weightx = 1;
gbcPanel0.weighty = 0;
gbcPanel0.anchor = GridBagConstraints.NORTH;
gbPanel0.setConstraints( tfText2, gbcPanel0 );
pnPanel0.add( tfText2 );

String []dataList3 = { "Chocolate", "Ice Cream", "Apple Pie" };
lsList3 = new JList( dataList3 );
gbcPanel0.gridx = 0;
gbcPanel0.gridy = 3;
gbcPanel0.gridwidth = 2;
gbcPanel0.gridheight = 2;
gbcPanel0.fill = GridBagConstraints.BOTH;
gbcPanel0.weightx = 1;
gbcPanel0.weighty = 1;
gbcPanel0.anchor = GridBagConstraints.NORTH;
gbPanel0.setConstraints( lsList3, gbcPanel0 );
pnPanel0.add( lsList3 );

btBut0 = new JButton( "Button 1" );
gbcPanel0.gridx = 2;
gbcPanel0.gridy = 3;
gbcPanel0.gridwidth = 2;
gbcPanel0.gridheight = 1;
gbcPanel0.fill = GridBagConstraints.BOTH;
gbcPanel0.weightx = 1;
gbcPanel0.weighty = 0;
gbcPanel0.anchor = GridBagConstraints.NORTH;
gbPanel0.setConstraints( btBut0, gbcPanel0 );
pnPanel0.add( btBut0 );

btBut1 = new JButton( "Button 3" );
gbcPanel0.gridx = 2;
gbcPanel0.gridy = 4;
gbcPanel0.gridwidth = 2;
gbcPanel0.gridheight = 1;
gbcPanel0.fill = GridBagConstraints.BOTH;
gbcPanel0.weightx = 1;
gbcPanel0.weighty = 0;
gbcPanel0.anchor = GridBagConstraints.NORTH;
gbPanel0.setConstraints( btBut1, gbcPanel0 );
pnPanel0.add( btBut1 );

btBut2 = new JButton( "Button 2" );
gbcPanel0.gridx = 4;
gbcPanel0.gridy = 3;
gbcPanel0.gridwidth = 2;
gbcPanel0.gridheight = 1;
gbcPanel0.fill = GridBagConstraints.BOTH;
gbcPanel0.weightx = 1;
gbcPanel0.weighty = 0;
gbcPanel0.anchor = GridBagConstraints.NORTH;
gbPanel0.setConstraints( btBut2, gbcPanel0 );
pnPanel0.add( btBut2 );

btBut3 = new JButton( "Button 4" );
gbcPanel0.gridx = 4;
gbcPanel0.gridy = 4;
gbcPanel0.gridwidth = 2;
gbcPanel0.gridheight = 1;
gbcPanel0.fill = GridBagConstraints.BOTH;
gbcPanel0.weightx = 1;
gbcPanel0.weighty = 0;
gbcPanel0.anchor = GridBagConstraints.NORTH;
gbPanel0.setConstraints( btBut3, gbcPanel0 );
pnPanel0.add( btBut3 );

getContentPane().add(BorderLayout.CENTER,pnPanel0) ;
setVisible(true);
}

McSnoop
15-11-2004, 14:57
Geil funzt. THX an alle.

Bezüglich des GridBagLayouts:

da es immer mehr blöcke werden je mehr komponenten man einfügt, würde es sich anbieten das ganze vielleicht in Schleifen zu packen??? so das die sourcen überschaubarer werden oder würden die schleifen das nur komplizierter machen???

mfg
Snoop

herzberg
17-11-2004, 00:55
Klar kannst du das in Schleifen Packen. Dann musst du aber auch die Layoutelemente mindestens in ein Array packen um sie nacheinander anzusprechen. Die Frage ist nun, da du viele unterschiedliche Layoutelemente hast, von welchen Typ dein Array sein soll. Du kannst den Typ auf Component setzen da alle von Component geerbt haben, musst aber dann beim konkreten Zugriff wieder Casten und das kostet Zeit.

kit
03-12-2004, 09:59
ich habe das GridBagLayout in einer Klasse gelöst, welche Formatierungselemente variabel zur Laufzeit parst. Voraussetzung ist Java 1.4, weil ich auf regular expressions zugreife.
Internationalisiert wird auch, dass kann man natürlich weglassen.

Vielleicht hilft das ja noch jemandem. Viele Grüße
Kit

GridBagPane.java

import java.awt.*;
import javax.swing.*;
import java.util.ResourceBundle;

class GridBagPane extends JPanel {
GlobalProperties GP;

GridBagLayout gbl;
GridBagConstraints gbc;


static GridBagConstraints LabelConstraints=new GridBagConstraints(1,1,1,1,1d,1d,GridBagConstraint s.EAST, GridBagConstraints.NONE, new Insets(6,6,6,3),0,0);

static GridBagConstraints DefaultConstraints=new GridBagConstraints(0,0,1,1,1.0,1.0,GridBagConstrai nts.WEST, GridBagConstraints.NONE, new Insets(6,3,6,6), 0, 0);

static Dimension DefaultMinSize=new Dimension(96,18);
static Dimension DefaultPrefSize=new Dimension(120,24);

GridBagPane(GlobalProperties GP) {
this.GP=GP;
gbl=new GridBagLayout();
gbc=(GridBagConstraints) DefaultConstraints.clone();

setLayout(gbl);
}

public Component add(JComponent c, String l, int gridx, int gridy) {

add(new JLabel(l, SwingConstants.RIGHT), new GridBagConstraints(gridx-1,gridy,1,1,1d,1d,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(6,6,6,3),0,0));

gbc.gridx=gridx;
gbc.gridy=gridy;
gbc.gridwidth=1;
gbc.gridheight=1;
c.setMinimumSize(DefaultMinSize);
c.setPreferredSize(DefaultPrefSize);
add(c, gbc);
return c;
}

public Component add(JComponent c, String f) {
String e[]=f.split("[,]+");

for (int i=0; i<e.length; i++) {
String s[]=e[i].split("[\\=]+");

if (s.length==1 ) {
parseFormatString(c, s[0].trim());
} else if (s.length==2 ) {
parseFormatString(c, s[0].trim(), s[1].trim());
}
}

c.setMinimumSize(DefaultMinSize);
c.setPreferredSize(DefaultPrefSize);
add(c, gbc);

gbc.gridx+=gbc.gridwidth+1;
return c;
}

public GridBagConstraints getConstraints() {
return gbc;
}

public void parseFormatString(JComponent c, String s, String a) {
if (s.equalsIgnoreCase("gridx")) {
gbc.gridx=Integer.valueOf(a).intValue();

} else if (s.equalsIgnoreCase("gridy")) {
gbc.gridy=Integer.valueOf(a).intValue();

} else if (s.equalsIgnoreCase("gridheight")) {
gbc.gridheight=Integer.valueOf(a).intValue();

} else if (s.equalsIgnoreCase("gridwidth")) {
gbc.gridwidth=Integer.valueOf(a).intValue();

} else if (s.equalsIgnoreCase("weightx")) {
gbc.weightx=Double.valueOf(a).intValue();

} else if (s.equalsIgnoreCase("weighty")) {
gbc.weighty=Double.valueOf(a).intValue();

} else if (s.equalsIgnoreCase("anchor")) {
try {
gbc.anchor=gbc.getClass().getField(a).getInt(gbc);
} catch (Exception ex) {
}
}

else if (s.equalsIgnoreCase("fill")) {
try {
gbc.fill=gbc.getClass().getField(a).getInt(gbc);
} catch (Exception ex) {
}
}

else if (s.equalsIgnoreCase("ipdax")) {
gbc.ipadx=Integer.valueOf(a).intValue();
}

else if (s.equalsIgnoreCase("ipady")) {
gbc.ipady=Integer.valueOf(a).intValue();
}

else if (s.equalsIgnoreCase("insets")) {
String t[]=a.split("[\\s]+");
if (t.length==4) {
gbc.insets.left=Integer.valueOf(t[0]).intValue();
gbc.insets.top=Integer.valueOf(t[1]).intValue();
gbc.insets.right=Integer.valueOf(t[2]).intValue();
gbc.insets.bottom=Integer.valueOf(t[3]).intValue();
}
}

else if (s.equalsIgnoreCase("label")) {
LabelConstraints.gridx=gbc.gridx;
LabelConstraints.gridy=gbc.gridy;
add(new JLabel(GP.localizeStr(a), SwingConstants.RIGHT), LabelConstraints);
gbc.gridx++;
}

else if (s.equalsIgnoreCase("setToolTipText")) {
c.setToolTipText(GP.localizeStr(a));
}
}

public void parseFormatString(JComponent c, String s) {
if (s.equalsIgnoreCase("nl")) {
gbc.gridx=0;
gbc.gridy++;

} else if (s.equalsIgnoreCase("reset")) {
int gridx=gbc.gridx;
int gridy=gbc.gridy;

gbc=(GridBagConstraints) DefaultConstraints.clone();
gbc.gridx=gridx;
gbc.gridy=gridy;
}
}

}


wird dann genutzt mit


CapitalPane = new GridBagPane(GP);
CapitalPane.add(TF_Capital, "label=i18n_Amount");
CapitalPane.add(TF_Valuta, "label=i18n_Valuta");

CapitalPane.add(TF_Rate, "nl, reset, label=i18n_Rate");
CapitalPane.add(TF_RateFrom, "label=i18n_FirstOn");
CapitalPane.add(TF_RateTo,"label=i18n_LastOn");

CapitalPane.add(TF_InterestRate, "nl, label=i18n_InterestRate");
CapitalPane.add(TF_InterestCycle, "label=i18n_InterestCycle");
CapitalPane.add(TF_DayCountConvention, "label=i18n_DayCountConvention");

OKButton = new JButton(GP.localizeStr("i18n_Execute"));
CapitalPane.add(OKButton, "nl, gridx=7, fill=HORIZONTAL");


das Ergebnis des letzen Code-Schnippsels ist dann:
http://www.i-kit.de/GridBagPane.png