Hallo allerseits,
1)
Beim Recherchieren im Internet und mit Hilfe eines kleinen Demoprogramms ist mir klar geworden, was im GridBagLayout bedeutet:
gridx
gridy
gridwidth
gridheight
Unklar ist mir noch, was bedeutet:
weightx
weighty
Ich habe zwar diese Werte in meinem Programm unten verstellt, doch das hat keine optische Auswirkungen gehabt.
2)
Desgleichen ergibt
addiereKopmonente(myPanel, gbl, myb4, 0, 2, 3, 1, 1, 1);
und
addiereKopmonente(myPanel, gbl, myb4, 0, 2, 9, 5, 1, 1);
auch das gleiche optische Ergebnis. Warum?
Ich verstehe nicht, was GridBagLayout macht?
3)
In meinem Demoprogramm (3 Spalten x 5 Zeilen) wird auf dem Bildschirm folgendes Fenster ausgegeben:
Leider wird der Button mit der Beschriftung 4 riesengroß
dargestellt (obwohl alle Buttons eigentlich fast die gleiche Beschriftung haben) und die anderen Buttons recht klein, wobei diese rechts noch Platz haben, während der Button 4 über die ganze Tabellenbreite geht.
Warum ist das so?
Wer bestimmt die Größe der einzelnen Buttons?
4)
Mein späteres Ziel ist eigentlich folgendes:
Oben am Fenster ein Schieberegler, daneben ein oder 2 Buttons.
Darunter gleich anschließend eine Zeichnung (dort bewegt sich ein Auto, wobei ich mit dem Schieberegeler die Geschwindigkeit des Autos regeln kann).
Also, zwei kleine Elemente (Schieberegeler und Button) und ein großes (Zeichnung).
Wie kann ich innerhalb eines GridBagLayout die Größen festlegen?
---------------------------------------------------
[HIGHLIGHT="Java"]package gridbaglayout2;
import java.awt.*;
import javax.swing.*;
public class MainGridBagLayout2 {
public static void main(String[] args) {
MyFenster myf = new MyFenster();
myf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
class MyFenster extends JFrame{
private Container mycont;
private JButton myb1, myb2, myb3, myb4, myb5, myb6, myb7;
private JPanel myPanel;
private GridBagLayout gbl;
public MyFenster(){
mycont = getContentPane();
myPanel=new JPanel();
myb1=new JButton("B1");
myb2=new JButton("B2");
myb3=new JButton("B3");
myb4=new JButton("B4");
myb5=new JButton("B5");
myb6=new JButton("B6");
myb7=new JButton("B7");
gbl = new GridBagLayout();
addiereKopmonente(myPanel, gbl, myb1, 0, 0, 2, 2, 1, 1);
addiereKopmonente(myPanel, gbl, myb2, 2, 0, 1, 1, 1, 1);
addiereKopmonente(myPanel, gbl, myb3, 2, 1, 1, 1, 1, 1);
addiereKopmonente(myPanel, gbl, myb4, 0, 2, 3, 1, 1, 1);
addiereKopmonente(myPanel, gbl, myb5, 0, 3, 2, 1, 1, 1);
addiereKopmonente(myPanel, gbl, myb6, 0, 4, 2, 1, 1, 1);
addiereKopmonente(myPanel, gbl, myb7, 2, 3, 1, 2, 1, 1);
myPanel.setLayout(gbl);
mycont.add(myPanel);
setTitle("Meine Zeichnung");
setLocation(30,60);
setSize(600,400);
setVisible(true);
}
public void addiereKopmonente(Container cont, GridBagLayout gbl, Component c, int x, int y, int width, int height, double weightx, double weighty){
GridBagConstraints gbc = new GridBagConstraints();
gbc.fill = GridBagConstraints.NONE;
gbc.anchor = GridBagConstraints.PAGE_START;
gbc.gridx = x;
gbc.gridy = y;
gbc.gridwidth = width;
gbc.gridheight = height;
gbc.weightx = weightx;
gbc.weighty = weighty;
gbl.setConstraints(c, gbc);
cont.add(c);
}
}[/HIGHLIGHT]
---------------------------------------------------
mfg
Ernst
1)
Beim Recherchieren im Internet und mit Hilfe eines kleinen Demoprogramms ist mir klar geworden, was im GridBagLayout bedeutet:
gridx
gridy
gridwidth
gridheight
Unklar ist mir noch, was bedeutet:
weightx
weighty
Ich habe zwar diese Werte in meinem Programm unten verstellt, doch das hat keine optische Auswirkungen gehabt.
2)
Desgleichen ergibt
addiereKopmonente(myPanel, gbl, myb4, 0, 2, 3, 1, 1, 1);
und
addiereKopmonente(myPanel, gbl, myb4, 0, 2, 9, 5, 1, 1);
auch das gleiche optische Ergebnis. Warum?
Ich verstehe nicht, was GridBagLayout macht?
3)
In meinem Demoprogramm (3 Spalten x 5 Zeilen) wird auf dem Bildschirm folgendes Fenster ausgegeben:
Code:
+----------------------+---+
| | 2 |
| 1 |---|
| | 3 |
|----------------------+---+
| 4 |
|----------------------+---+
| 5 | |
|----------------------+ 7 |
| 6 | |
+----------------------+---+
Leider wird der Button mit der Beschriftung 4 riesengroß
dargestellt (obwohl alle Buttons eigentlich fast die gleiche Beschriftung haben) und die anderen Buttons recht klein, wobei diese rechts noch Platz haben, während der Button 4 über die ganze Tabellenbreite geht.
Warum ist das so?
Wer bestimmt die Größe der einzelnen Buttons?
4)
Mein späteres Ziel ist eigentlich folgendes:
Oben am Fenster ein Schieberegler, daneben ein oder 2 Buttons.
Darunter gleich anschließend eine Zeichnung (dort bewegt sich ein Auto, wobei ich mit dem Schieberegeler die Geschwindigkeit des Autos regeln kann).
Also, zwei kleine Elemente (Schieberegeler und Button) und ein großes (Zeichnung).
Wie kann ich innerhalb eines GridBagLayout die Größen festlegen?
---------------------------------------------------
[HIGHLIGHT="Java"]package gridbaglayout2;
import java.awt.*;
import javax.swing.*;
public class MainGridBagLayout2 {
public static void main(String[] args) {
MyFenster myf = new MyFenster();
myf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
class MyFenster extends JFrame{
private Container mycont;
private JButton myb1, myb2, myb3, myb4, myb5, myb6, myb7;
private JPanel myPanel;
private GridBagLayout gbl;
public MyFenster(){
mycont = getContentPane();
myPanel=new JPanel();
myb1=new JButton("B1");
myb2=new JButton("B2");
myb3=new JButton("B3");
myb4=new JButton("B4");
myb5=new JButton("B5");
myb6=new JButton("B6");
myb7=new JButton("B7");
gbl = new GridBagLayout();
addiereKopmonente(myPanel, gbl, myb1, 0, 0, 2, 2, 1, 1);
addiereKopmonente(myPanel, gbl, myb2, 2, 0, 1, 1, 1, 1);
addiereKopmonente(myPanel, gbl, myb3, 2, 1, 1, 1, 1, 1);
addiereKopmonente(myPanel, gbl, myb4, 0, 2, 3, 1, 1, 1);
addiereKopmonente(myPanel, gbl, myb5, 0, 3, 2, 1, 1, 1);
addiereKopmonente(myPanel, gbl, myb6, 0, 4, 2, 1, 1, 1);
addiereKopmonente(myPanel, gbl, myb7, 2, 3, 1, 2, 1, 1);
myPanel.setLayout(gbl);
mycont.add(myPanel);
setTitle("Meine Zeichnung");
setLocation(30,60);
setSize(600,400);
setVisible(true);
}
public void addiereKopmonente(Container cont, GridBagLayout gbl, Component c, int x, int y, int width, int height, double weightx, double weighty){
GridBagConstraints gbc = new GridBagConstraints();
gbc.fill = GridBagConstraints.NONE;
gbc.anchor = GridBagConstraints.PAGE_START;
gbc.gridx = x;
gbc.gridy = y;
gbc.gridwidth = width;
gbc.gridheight = height;
gbc.weightx = weightx;
gbc.weighty = weighty;
gbl.setConstraints(c, gbc);
cont.add(c);
}
}[/HIGHLIGHT]
---------------------------------------------------
mfg
Ernst
Zuletzt bearbeitet von einem Moderator: