Hi,
sorry für den schlechten Thread-Titel,
mir viel aber leider kein anderer ein ....
So langsam verzweifel ich an meinem Problem:
Ich habe ein Fenster mit zwei Panels ...
Das oberer (NORTH) Panel ändert die Höhe, wenn es breiter oder schmaler wird.
Das untere Panel (SOUTH-Panel) ist komplett dynamisch und verbraucht dem vom Layout-Manager zugewiesenen Platz.
Ich habe mal eine kleine Testmethode gebastelt:
so soll es aussehen ...
nun mein Problem,
wenn ich das Fenster ein wenig schmaler mache,
dann verschwindet vom "NORTH"-Panel der untere Teil ...
(constraints.weighty = 0.0 .. ist in diesem Beispiel extra auf null gesetzt, nur um zu zeigen wie es später aussehen soll)
Wenn ich die weighty-Konstante ändere,
dann füllt das "SOUTH"-Panel nichtmehr den kompletten Bereich aus,
aber man kann das Fenster schmaler ziehen,
oder das das "NORTH"-Panel halb verschwindet:
Gibt es eine Möglichkeit, dass die Höhe des "SOUTH"-Panel geändert wird,
wenn die sich auch ändert und man nicht einen Prozentsatz angeben muss, wieviel Platz die Komponente verbraucht?
Im Anhang sind zwei Bilder, wie das aussehen soll.
sorry für den schlechten Thread-Titel,
mir viel aber leider kein anderer ein ....
So langsam verzweifel ich an meinem Problem:
Ich habe ein Fenster mit zwei Panels ...
Das oberer (NORTH) Panel ändert die Höhe, wenn es breiter oder schmaler wird.
Das untere Panel (SOUTH-Panel) ist komplett dynamisch und verbraucht dem vom Layout-Manager zugewiesenen Platz.
Ich habe mal eine kleine Testmethode gebastelt:
Java:
public static void main(String[] args) {
JPanel panel = new JPanel();
panel.add(new JLabel("ein JLabel mit"));
panel.add(new JLabel("ganz ganz langem Text"));
JPanel p = new JPanel(new GridBagLayout());
GridBagConstraints constraints = new GridBagConstraints();
constraints.gridwidth = GridBagConstraints.REMAINDER;
constraints.fill = GridBagConstraints.BOTH;
constraints.weightx = 1.0;
constraints.weighty = 0.0;
p.add(panel, constraints);
constraints.fill = GridBagConstraints.BOTH;
constraints.weighty = 1.0;
p.add(new JButton("dynamisches JPanel (hier Button)"), constraints);
JFrame f = new JFrame("Panel");
f.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
f.add(p);
f.pack();
f.setSize(250, 150);
f.setVisible(true);
}
so soll es aussehen ...
nun mein Problem,
wenn ich das Fenster ein wenig schmaler mache,
dann verschwindet vom "NORTH"-Panel der untere Teil ...
(constraints.weighty = 0.0 .. ist in diesem Beispiel extra auf null gesetzt, nur um zu zeigen wie es später aussehen soll)
Wenn ich die weighty-Konstante ändere,
dann füllt das "SOUTH"-Panel nichtmehr den kompletten Bereich aus,
aber man kann das Fenster schmaler ziehen,
oder das das "NORTH"-Panel halb verschwindet:
Java:
public static void main(String[] args) {
JPanel panel = new JPanel();
panel.add(new JLabel("ein JLabel mit"));
panel.add(new JLabel("ganz ganz langem Text"));
JPanel p = new JPanel(new GridBagLayout());
GridBagConstraints constraints = new GridBagConstraints();
constraints.gridwidth = GridBagConstraints.REMAINDER;
constraints.fill = GridBagConstraints.BOTH;
constraints.weightx = 1.0;
constraints.weighty = 1.0;
p.add(panel, constraints);
constraints.fill = GridBagConstraints.BOTH;
constraints.weighty = 0.9;
p.add(new JButton("dynamisches JPanel (hier Button)"), constraints);
JFrame f = new JFrame("Panel");
f.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
f.add(p);
f.pack();
f.setSize(250, 150);
f.setVisible(true);
}
Gibt es eine Möglichkeit, dass die Höhe des "SOUTH"-Panel geändert wird,
wenn die sich auch ändert und man nicht einen Prozentsatz angeben muss, wieviel Platz die Komponente verbraucht?
Im Anhang sind zwei Bilder, wie das aussehen soll.