Hallo zusammen,
ich bin gerade dabei, JAVA zu lernen und bin gerade bei den Layoutmanagern angekommen.
Am meisten interessiert mich davon der GridBagLayoutmanager, aber irgendwie scheint das
auch derjenige zu sein, der am kompliziertesten ist.
Ausserdem wird in den meisten Büchern und bei den meisten Seiten im Netz der GridBagLayoutmanager nur schlecht erklärt und deshalb beleiben bei mir einige Fragen offen.
Falls mir hier jemand weiterhelfen könnte würde ich mich sehr freuen.
Also erstmal:
Muss eine Zeile voll ausgefüllt werden?
Oder kann ich einfach einen Button o.ä. mitten in der Zeile plazieren ohne dass davor etwas anderes ist?
Wenn ein Button über mehrere Zeilen gehen soll, muss sich in einer seiner Zeilen noch ein andere Button o.ä. befinden, damit er auch wirklich mehrere Zeilen einnimmt?
Diese Frage stelle ich, weil ich ein Programm geschrieben habe, das 5 Buttons darstellt, die unterschiedlich groß sein sollen, aber auf mehrere Zeilen verteilt sind. Die buttons werden aber alle gleich groß dargestellt. Ich habe kein preferredSize verwendet, weil ich dacht, dass wenn ein Button über eine Zeile geht und ein anderer über 2 Zeilen müsste er doch eigentlich doppelt so groß sein.
Ich muss auch gestehen, dass ich mit dem Aufbau des GridBag nicht so ganz klar komme. Ich poste hier mal meinen Code, evtl. hab ich ja einen gravierenden Fehler übersehen. Wie gesagt, die Buttons werden dargestellt, aber alle sind gleich groß und gehen nur über eine Zeile.
ich bin gerade dabei, JAVA zu lernen und bin gerade bei den Layoutmanagern angekommen.
Am meisten interessiert mich davon der GridBagLayoutmanager, aber irgendwie scheint das
auch derjenige zu sein, der am kompliziertesten ist.
Ausserdem wird in den meisten Büchern und bei den meisten Seiten im Netz der GridBagLayoutmanager nur schlecht erklärt und deshalb beleiben bei mir einige Fragen offen.
Falls mir hier jemand weiterhelfen könnte würde ich mich sehr freuen.
Also erstmal:
Muss eine Zeile voll ausgefüllt werden?
Oder kann ich einfach einen Button o.ä. mitten in der Zeile plazieren ohne dass davor etwas anderes ist?
Wenn ein Button über mehrere Zeilen gehen soll, muss sich in einer seiner Zeilen noch ein andere Button o.ä. befinden, damit er auch wirklich mehrere Zeilen einnimmt?
Diese Frage stelle ich, weil ich ein Programm geschrieben habe, das 5 Buttons darstellt, die unterschiedlich groß sein sollen, aber auf mehrere Zeilen verteilt sind. Die buttons werden aber alle gleich groß dargestellt. Ich habe kein preferredSize verwendet, weil ich dacht, dass wenn ein Button über eine Zeile geht und ein anderer über 2 Zeilen müsste er doch eigentlich doppelt so groß sein.
Ich muss auch gestehen, dass ich mit dem Aufbau des GridBag nicht so ganz klar komme. Ich poste hier mal meinen Code, evtl. hab ich ja einen gravierenden Fehler übersehen. Wie gesagt, die Buttons werden dargestellt, aber alle sind gleich groß und gehen nur über eine Zeile.
Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class testGUI extends JFrame
{
private JButton B1;
private JButton B2;
private JButton B3;
private JButton B4;
private JButton B5;
public testGUI()
{
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container cont = getContentPane();
GridBagLayout gbl = new GridBagLayout();
cont.setLayout(gbl);
GridBagConstraints gbc = new GridBagConstraints();
gbc.fill = GridBagConstraints.NONE;
gbc.weightx = 0.0;
gbc.weighty = 0.0;
B1 = new JButton("1");
B1.setBackground(Color.black);
gbc.gridx = 1; //x grid position
gbc.gridy = 0; //y grid position
gbc.gridwidth = 4;
gbc.gridheight = 2;
gbl.setConstraints(B1, gbc); //associate the label with a constraint object
cont.add(B1); //add it to content pane
B2 = new JButton("2");
B2.setBackground(Color.white);
gbc.gridx = 0; //x grid position
gbc.gridy = 2; //y grid position
gbc.gridwidth = 3;
gbc.gridheight = 1;
gbl.setConstraints(B2, gbc); //associate the label with a constraint object
cont.add(B2); //add it to content pane
B3 = new JButton("3");
B3.setBackground(Color.white);
gbc.gridx = 4; //x grid position
gbc.gridy = 2; //y grid position
gbc.gridwidth = 3;
gbc.gridheight = 2;
gbl.setConstraints(B3, gbc); //associate the label with a constraint object
cont.add(B3); //add it to content pane
B4 = new JButton("4");
B4.setBackground(Color.green);
gbc.gridx = 2; //x grid position
gbc.gridy = 4; //y grid position
gbc.gridwidth = 5;
gbc.gridheight = 5;
gbl.setConstraints(B4, gbc); //associate the label with a constraint object
cont.add(B4); //add it to content pane
B5 = new JButton("5");
B5.setBackground(Color.white);
gbc.gridx = 2; //x grid position
gbc.gridy = 9; //y grid position
gbc.gridwidth = 5;
gbc.gridheight = 3;
gbl.setConstraints(B5, gbc); //associate the label with a constraint object
cont.add(B5); //add it to content pane
}
}
public class Gridder3b
{
public static void main ( String[] args )
{
testGUI tester = new testGUI();
tester.setTitle("VIEWER");
tester.setSize(200, 200);
//tester.pack();
tester.setVisible(true);
//tester.setResizable(false);
}
}