Hallo nochmal!
Also ich spiele seit paar Tagen ein wenig mit dem GridBagLayout herum und frage mich wie diese weightx,y werte zu verstehen sind. Man kann Sie als Prozentuale Angabe sehen, soviel hab ich schon verstanden.
Auch müssen bzw sollten alle weightx und y Angaben in einer Zeile oder Spalte immer 100 ergeben.
Aber trotzdem wills nicht in mein Kopf wie das funktionieren soll .. Ich durchforste ein Forum nach dem anderen und versuch das zu verstehen, tus aber nicht
.. folgendes ( ohne den schwarzen Bereich, rechts) hätte ich gerne...
Folgendes hab ich bis jetzt geschafft ...
Verständnissfrage: Dieses Gitter, das ich mir beim GridB.L. denke, muss das in meinem Fall das Bild links oben in einer Zelle sein oder darf/soll es sogar über mehrere Spalten und Zeilen gehn?
Wieso ist dann Test2, das Rote Kastl nicht direkt an dem "Bild" dran?
Das "Bild" beginnt bei
und geht bis
und das Rote TextFeld beginnt auch bei
warum dann der Abstand Zwischen Grau und Rot??
Mein Code ist wahrscheinlich ziemlich dumm geschrieben aber als Anfänger (zumindest für mich) nicht anderst machbar :noe:
Vielleicht will sich ja jemand die Zeit nehmen und versuchen, mir zu erklären, worans scheitert??
thx
Also ich spiele seit paar Tagen ein wenig mit dem GridBagLayout herum und frage mich wie diese weightx,y werte zu verstehen sind. Man kann Sie als Prozentuale Angabe sehen, soviel hab ich schon verstanden.
Auch müssen bzw sollten alle weightx und y Angaben in einer Zeile oder Spalte immer 100 ergeben.
Aber trotzdem wills nicht in mein Kopf wie das funktionieren soll .. Ich durchforste ein Forum nach dem anderen und versuch das zu verstehen, tus aber nicht
.. folgendes ( ohne den schwarzen Bereich, rechts) hätte ich gerne...
Folgendes hab ich bis jetzt geschafft ...
Verständnissfrage: Dieses Gitter, das ich mir beim GridB.L. denke, muss das in meinem Fall das Bild links oben in einer Zelle sein oder darf/soll es sogar über mehrere Spalten und Zeilen gehn?
Wieso ist dann Test2, das Rote Kastl nicht direkt an dem "Bild" dran?
Das "Bild" beginnt bei
Java:
gbc.gridx = 0;
Java:
gbc.gridwidth = 2;
Java:
gbc.gridx = 2;
Mein Code ist wahrscheinlich ziemlich dumm geschrieben aber als Anfänger (zumindest für mich) nicht anderst machbar :noe:
Java:
package startPackage;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
@SuppressWarnings("serial")
public class GridBagLayoutFrame extends JFrame{
private JPanel contentPane;
private JButton test1 = new JButton();
private JButton test6, test7;
private JLabel test2;
private JLabel test3;
private JTextField test4;
private JLabel test5;
public GridBagLayoutFrame(){
super("GridBagLayoutFrame");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
contentPane = new JPanel(new GridBagLayout());
contentPane.setBorder(BorderFactory.createLineBorder(Color.BLACK, 3));
test1 = new JButton("Bild");
test1.setPreferredSize(new Dimension(180, 150));
test1.setBorder(BorderFactory.createLineBorder(Color.BLACK, 3));
test1.setBackground(Color.LIGHT_GRAY);
test1.setOpaque(true);
test2 = new JLabel("Grösseres TextFeld mit viiiiiiiiiiiel Text");
test2.setPreferredSize(new Dimension(250, 100));
test2.setBorder(BorderFactory.createLineBorder(Color.BLACK, 3));
test2.setBackground(Color.RED);
test2.setOpaque(true);
test3 = new JLabel("Test");
test3.setPreferredSize(new Dimension(50, 50));
test3.setBorder(BorderFactory.createLineBorder(Color.BLACK, 3));
test3.setBackground(Color.GREEN);
test3.setOpaque(true);
test4 = new JTextField("Test4");
test4.setPreferredSize(new Dimension(50, 25));
test4.setBorder(BorderFactory.createLineBorder(Color.BLACK, 3));
test4.setBackground(Color.YELLOW);
test4.setOpaque(true);
test5 = new JLabel("Test5");
test5.setPreferredSize(new Dimension(200, 25));
test5.setBorder(BorderFactory.createLineBorder(Color.BLACK, 3));
test5.setBackground(Color.MAGENTA);
test5.setOpaque(true);
test6 = new JButton("Button 1");
test6.setPreferredSize(new Dimension(100, 25));
test6.setBorder(BorderFactory.createLineBorder(Color.BLACK, 3));
test6.setBackground(Color.ORANGE);
test6.setOpaque(true);
test7 = new JButton("Button 2");
test7.setPreferredSize(new Dimension(100, 25));
test7.setBorder(BorderFactory.createLineBorder(Color.BLACK, 3));
test7.setBackground(Color.ORANGE);
test7.setOpaque(true);
JFrame jframe = new JFrame("GridBagLayoutTest");
GridBagConstraints gbc;
gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 0;
gbc.gridwidth = 2;
gbc.gridheight = 2;
// gbc.weightx = 0.5;
// gbc.weighty = 0.5;
contentPane.add(test1, gbc);
gbc = new GridBagConstraints();
gbc.gridx = 2;
gbc.gridy = 0;
gbc.gridwidth = 4;
gbc.gridheight = 2;
contentPane.add(test2, gbc);
gbc = new GridBagConstraints();
gbc.gridx = 6;
gbc.gridy = 0;
gbc.gridwidth = 1;
gbc.gridheight = 1;
contentPane.add(test3, gbc);
gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 5;
gbc.gridwidth = 1;
gbc.gridheight = 1;
contentPane.add(test4, gbc);
gbc = new GridBagConstraints();
gbc.gridx = 1;
gbc.gridy = 5;
gbc.gridwidth = 4;
gbc.gridheight = 1;
contentPane.add(test5, gbc);
gbc = new GridBagConstraints();
gbc.gridx = 5;
gbc.gridy = 5;
gbc.gridwidth = 2;
gbc.gridheight = 1;
gbc.insets = new Insets(2, 0, 2, 2);
contentPane.add(test6, gbc);
gbc = new GridBagConstraints();
gbc.gridx = 5;
gbc.gridy = 4;
gbc.gridwidth = 2;
gbc.gridheight = 1;
gbc.insets = new Insets(0, 0, 2, 2);
contentPane.add(test7, gbc);
jframe.add(contentPane);
jframe.setSize(new Dimension(400, 250));
jframe.pack();
jframe.setAlwaysOnTop(true);
jframe.setVisible(true);
}
}
Vielleicht will sich ja jemand die Zeit nehmen und versuchen, mir zu erklären, worans scheitert??
thx