Hallo,
ich habe folgendes Problem. Ich habe mein Hauptfenster unterteilt in 3 verschiedene JPanel sowie mehrere JButton.
In den 3 JPanels werden nu im Laufe des Programms verschiedene Komponenten zugefügt, diese wieder entfernt rumgezeichnet etc.
Der Code für meine Methode Hauptfenster.einrichten ist folgender:
Die statische Methode LayoutMethoden.makegbc(int x, int y, int width, int height, double wx,
double wy, boolean fill) setzt die GridBagConstraints wie folgt:
Mein Problem ist das folgende: Eigentlich erwarte ich dass mein textPanel ein Drittel der Höhe einnimmt wie mein zeichenPanel und mein arbeitsPanel. (gbc.weighty ist beim textPanel 5, bei den anderen 2 Paneln 15.)
Das passt auch anfangs so ungefähr. Aber je nachdem, was ich in meine Panels einfüge, verändert sich dieses Verhältnis!?!?
Meinem Textpanel wird während des Programmverlaufs jeweils eine JEditorPane mit unterschiedlichem html-Text zugefügt, auf meinem zeichenPanel und arbeitsPanel diverse Zeichnungn vollführt.
Hat jemand eine Ahnung, warum sich die Größenverhältnisse ändern? Ich dachte, die sollten unabhängig davon sein, was eingefügt wird. Zum Teil wächst aber das textpanel auf fast die gesamte Seitenhöhe an, während auf meinem ZeichenPanel die Zeichnungen gequetscht werden.
Für 'nen Tip, wär ich dankbar.
ich habe folgendes Problem. Ich habe mein Hauptfenster unterteilt in 3 verschiedene JPanel sowie mehrere JButton.
In den 3 JPanels werden nu im Laufe des Programms verschiedene Komponenten zugefügt, diese wieder entfernt rumgezeichnet etc.
Der Code für meine Methode Hauptfenster.einrichten ist folgender:
Code:
public void einrichten(){
//Layout setzen und Komponenten hinzufügen
GridBagLayout gbl = new GridBagLayout();
GridBagConstraints gbc;
getContentPane().setLayout(gbl);
//TextPanel hinzufügen
gbc = LayoutMethoden.makegbc(0, 0, 6, 1, 15, 5, true);
gbl.setConstraints(tPanel, gbc);
getContentPane().add(tPanel);
//ZeichenPanel hinzufügen
gbc = LayoutMethoden.makegbc(0, 1, 3, 1, 15, 15, true);
gbl.setConstraints(zPanel, gbc);
zPanel.setBackground(Color.WHITE);
getContentPane().add(zPanel);
// ArbeitsPanel hinzufügen
gbc = LayoutMethoden.makegbc(3, 1, 3, 1, 15, 15, true);
gbl.setConstraints(aPanel, gbc);
aPanel.setBackground(Color.LIGHT_GRAY);
getContentPane().add(aPanel);
//Button hinzufügen
for (int i=0; i<5; i++){
gbc = LayoutMethoden.makegbc(i, 2, 1, 1, 3, 1, false);
gbl.setConstraints(playButtonGroup[i], gbc);
getContentPane().add(playButtonGroup[i]);
}
//Geschwindigkeitsregler hinzufügen
gbc = LayoutMethoden.makegbc(5, 2, 1, 1, 3, 1, true);
gbl.setConstraints(geschwindigkeitsRegler, gbc);
getContentPane().add(geschwindigkeitsRegler);
//Dialogelemente layouten
validate();
//pack();
}
double wy, boolean fill) setzt die GridBagConstraints wie folgt:
Code:
//Methoden zur Festlegung von GridBagLayout-Bedingungen
public static GridBagConstraints makegbc(int x, int y, int width, int height, double wx,
double wy, boolean fill) {
return makegbc(x, y, width,height, wx, wy, GridBagConstraints.CENTER, fill);
}
public static GridBagConstraints makegbc(int x, int y, int width, int height, double wx,
double wy, int anchor, boolean fill) {
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = x;
gbc.gridy = y;
gbc.gridwidth = width;
gbc.gridheight = height;
gbc.weightx= wx;
gbc.weighty = wy;
gbc.anchor = anchor;
gbc.insets = new Insets(2, 2, 2, 2);
if (fill)
gbc.fill = GridBagConstraints.BOTH;
else
gbc.fill = GridBagConstraints.NONE;
return gbc;
}
Das passt auch anfangs so ungefähr. Aber je nachdem, was ich in meine Panels einfüge, verändert sich dieses Verhältnis!?!?
Meinem Textpanel wird während des Programmverlaufs jeweils eine JEditorPane mit unterschiedlichem html-Text zugefügt, auf meinem zeichenPanel und arbeitsPanel diverse Zeichnungn vollführt.
Hat jemand eine Ahnung, warum sich die Größenverhältnisse ändern? Ich dachte, die sollten unabhängig davon sein, was eingefügt wird. Zum Teil wächst aber das textpanel auf fast die gesamte Seitenhöhe an, während auf meinem ZeichenPanel die Zeichnungen gequetscht werden.
Für 'nen Tip, wär ich dankbar.