Hallo!
Ich bin verzweifelt, was dieses GridBagLayout betrifft. Ich denke aber, dass dies der Layout Manager ist, den ich benötige.
Ich möchte zwei Listenfelder so anordnen, dass ich links und rechts im Fenster eins habe. Dazwischen sollen zwei Button sein, mit denen man das, was im linken (bzw. rechten) Listenfeld ausgewählt ist in das andere Listenfeld schaufeln kann.
Mein Code das so zu machen sieht bis jetzt so aus:
Ich denke mal, dass ich gbc.ipadx schon verstanden habe (war auch nicht wirklich schwer), aber jetzt geht es los: gbc.gridx soll doch angeben, in der wievielten Spalte das jeweilige Element beginnen soll. gbc.gridy gibt dann die Zeile an. Warum werden dann die Buttons nicht untereinander gezeichnet, da der eine ja (meinem Verständis nach) in Zeile 3 ist, und der zweite in Zeile 5.
Warum sind die beiden Listenfelder in der Mitte des Panels (horizontal gesehen) und nicht oben, da ich doch bei beiden gbc.gridy = 0 angegeben habe.
Dann möchte ich Grundsätzlich noch wissen, ob man nicht irgendwie von vornherein sagen kann in wie viele Zeilen/Spalten das Panel eingeteilt werden soll. Das würde einem die Layoutplanung doch erheblich erleichtern, weil man dann ja ein grobe Skize auf einem gerasterten Blatt Papier machen könnte, und müsste die Werte für x und y Positionen nur abzählen und programmieren.
Ich hoffe ihr könnt mir helfen.
Gruß
Maik
Ich bin verzweifelt, was dieses GridBagLayout betrifft. Ich denke aber, dass dies der Layout Manager ist, den ich benötige.
Ich möchte zwei Listenfelder so anordnen, dass ich links und rechts im Fenster eins habe. Dazwischen sollen zwei Button sein, mit denen man das, was im linken (bzw. rechten) Listenfeld ausgewählt ist in das andere Listenfeld schaufeln kann.
Mein Code das so zu machen sieht bis jetzt so aus:
Code:
class GridBagPanel extends JPanel
{
// Elemente des Panels anlegen
private JList Liste1 = new JList();
private JList Liste2 = new JList();
private JButton Add = new JButton(">>");
private JButton Remove = new JButton("<<");
GridBagPanel()
{
setBackground(Color.LIGHT_GRAY);
// GridBagLayout für Panel festlegen
GridBagLayout gbl = new GridBagLayout();
setLayout(gbl);
// Instanz von GridBagConstrains erstellen
GridBagConstraints gbc = new GridBagConstraints();
gbc.insets = new Insets(10, 10, 10, 10);
Liste1.setToolTipText("Liste1");
gbc.anchor = GridBagConstraints.CENTER;
gbc.ipadx = 180;
gbc.ipady = 200;
gbc.gridx = 0;
gbc.gridy = 0;
gbc.gridheight = 7;
gbl.setConstraints(Liste1, gbc);
add(Liste1);
Liste2.setToolTipText("Liste2");
gbc.anchor = GridBagConstraints.NORTHEAST;
gbc.ipadx = 180;
gbc.ipady = 200;
gbc.gridx = 3;
gbc.gridy = 0;
gbc.gridheight = 7;
gbl.setConstraints(Liste2, gbc);
add(Liste2);
gbc.ipadx = 60;
gbc.ipady = 10;
gbc.gridx = 1;
gbc.gridy = 3; // Zeile 3
gbl.setConstraints(Add, gbc);
add(Add);
gbc.ipadx = 60;
gbc.ipady = 10;
gbc.gridx = 1;
gbc.gridy = 5; // Zeile 5
gbl.setConstraints(Remove, gbc);
add(Remove);
}
}
Ich denke mal, dass ich gbc.ipadx schon verstanden habe (war auch nicht wirklich schwer), aber jetzt geht es los: gbc.gridx soll doch angeben, in der wievielten Spalte das jeweilige Element beginnen soll. gbc.gridy gibt dann die Zeile an. Warum werden dann die Buttons nicht untereinander gezeichnet, da der eine ja (meinem Verständis nach) in Zeile 3 ist, und der zweite in Zeile 5.
Warum sind die beiden Listenfelder in der Mitte des Panels (horizontal gesehen) und nicht oben, da ich doch bei beiden gbc.gridy = 0 angegeben habe.
Dann möchte ich Grundsätzlich noch wissen, ob man nicht irgendwie von vornherein sagen kann in wie viele Zeilen/Spalten das Panel eingeteilt werden soll. Das würde einem die Layoutplanung doch erheblich erleichtern, weil man dann ja ein grobe Skize auf einem gerasterten Blatt Papier machen könnte, und müsste die Werte für x und y Positionen nur abzählen und programmieren.
Ich hoffe ihr könnt mir helfen.
Gruß
Maik