Hallo,
ich bin neu hier im Forum und habe mich angemeldet, weil ich eine dringende Frage habe. Ich bin nämlich gerade dabei, mir eine Oberfläche für mein Programm mit dem GridBagLayout zusammenzubasteln. Leider klappt das nie so wie ich es will. Im Normalfall befinden sich die Schaltflächen irgendwo, nur nicht da, wo ich sie haben möchte, und auch in der faschen Größe. Und da mich das Problem jetzt schon fast zwei Wochen beschäftigt und ich im Internet keine gute Erklärung gefunden habe, frage ich jetzt hier nach.
Also, ich habe mir mit jvider (dem Plugin für Eclipse) die Oberfläche zusammengestellt. So sieht sie aus:
Wenn ich jetzt aber das Programm ausführe, kommt das hier heraus:
Es ist also im Grunde genommen das, was ich haben will, nur leider vollkommen falsch dimensioniert.
Hier ist noch der Code, den ```import javax.swing.JPanel;
import javax.swing.BorderFactory;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import javax.swing.JLabel;
import javax.swing.JButton;
JPanel pnPanel0;
JLabel lbLabel0;
JButton btBut0;
JButton btBut1;
JButton btBut2;
JButton btBut3;
JButton btBut4;
JButton btBut6;
pnPanel0 = new JPanel();
GridBagLayout gbPanel0 = new GridBagLayout();
GridBagConstraints gbcPanel0 = new GridBagConstraints();
pnPanel0.setLayout( gbPanel0 );
lbLabel0 = new JLabel( “Überschrift” );
gbcPanel0.gridx = 6;
gbcPanel0.gridy = 1;
gbcPanel0.gridwidth = 18;
gbcPanel0.gridheight = 3;
gbcPanel0.fill = GridBagConstraints.BOTH;
gbcPanel0.weightx = 1;
gbcPanel0.weighty = 1;
gbcPanel0.anchor = GridBagConstraints.NORTH;
gbPanel0.setConstraints( lbLabel0, gbcPanel0 );
pnPanel0.add( lbLabel0 );
btBut0 = new JButton( “Button1” );
gbcPanel0.gridx = 10;
gbcPanel0.gridy = 5;
gbcPanel0.gridwidth = 10;
gbcPanel0.gridheight = 2;
gbcPanel0.fill = GridBagConstraints.BOTH;
gbcPanel0.weightx = 1;
gbcPanel0.weighty = 0;
gbcPanel0.anchor = GridBagConstraints.NORTH;
gbcPanel0.insets = new Insets( 0,0,1,0 );
gbPanel0.setConstraints( btBut0, gbcPanel0 );
pnPanel0.add( btBut0 );
btBut1 = new JButton( “Button2” );
gbcPanel0.gridx = 10;
gbcPanel0.gridy = 7;
gbcPanel0.gridwidth = 10;
gbcPanel0.gridheight = 2;
gbcPanel0.fill = GridBagConstraints.BOTH;
gbcPanel0.weightx = 1;
gbcPanel0.weighty = 0;
gbcPanel0.anchor = GridBagConstraints.NORTH;
gbcPanel0.insets = new Insets( 1,0,1,0 );
gbPanel0.setConstraints( btBut1, gbcPanel0 );
pnPanel0.add( btBut1 );
btBut2 = new JButton( “Button3” );
gbcPanel0.gridx = 10;
gbcPanel0.gridy = 9;
gbcPanel0.gridwidth = 10;
gbcPanel0.gridheight = 2;
gbcPanel0.fill = GridBagConstraints.BOTH;
gbcPanel0.weightx = 1;
gbcPanel0.weighty = 0;
gbcPanel0.anchor = GridBagConstraints.NORTH;
gbcPanel0.insets = new Insets( 1,0,1,0 );
gbPanel0.setConstraints( btBut2, gbcPanel0 );
pnPanel0.add( btBut2 );
btBut3 = new JButton( “Button4” );
gbcPanel0.gridx = 10;
gbcPanel0.gridy = 11;
gbcPanel0.gridwidth = 10;
gbcPanel0.gridheight = 2;
gbcPanel0.fill = GridBagConstraints.BOTH;
gbcPanel0.weightx = 1;
gbcPanel0.weighty = 0;
gbcPanel0.anchor = GridBagConstraints.NORTH;
gbcPanel0.insets = new Insets( 1,0,1,0 );
gbPanel0.setConstraints( btBut3, gbcPanel0 );
pnPanel0.add( btBut3 );
btBut4 = new JButton( “Button5” );
gbcPanel0.gridx = 10;
gbcPanel0.gridy = 13;
gbcPanel0.gridwidth = 6;
gbcPanel0.gridheight = 2;
gbcPanel0.fill = GridBagConstraints.BOTH;
gbcPanel0.weightx = 1;
gbcPanel0.weighty = 0;
gbcPanel0.anchor = GridBagConstraints.NORTH;
gbcPanel0.insets = new Insets( 1,0,0,1 );
gbPanel0.setConstraints( btBut4, gbcPanel0 );
pnPanel0.add( btBut4 );
btBut6 = new JButton( “Button6” );
gbcPanel0.gridx = 16;
gbcPanel0.gridy = 13;
gbcPanel0.gridwidth = 4;
gbcPanel0.gridheight = 2;
gbcPanel0.fill = GridBagConstraints.BOTH;
gbcPanel0.weightx = 1;
gbcPanel0.weighty = 0;
gbcPanel0.anchor = GridBagConstraints.NORTH;
gbcPanel0.insets = new Insets( 1,1,0,0 );
gbPanel0.setConstraints( btBut6, gbcPanel0 );
pnPanel0.add( btBut6 );
(leider gibt es hier im Forum keine Spoiler)
Meine Frage ist jetzt also: wie kriege ich es hin, dass die Oberfläche des Programms bei der Ausführung genau so aussieht wie die Vorlage?
Ich wäre froh, wenn mir jemand helfen könnte. Vielen Dank im Voraus und viele Grüße
corvus
P.S.: Ich habe es natürlich auch schon ohne jvider versucht, aber das sah noch schlimmer aus.
P.P.S.: Da ich vor kurzem erst richtig mit Java angefangen habe, wäre ich froh, wenn ihr nicht mit Fachwörtern um euch schmeißen würdet ;)