dynamisches Layout

thomy800

Erfahrenes Mitglied
Hi.

Ich möchte ein besonders schickes Layout machen. Der Aufbau sieht so aus:
Code:
|--------------------------------------------|
|         Menüleiste (Panel) - statisch      |
| . . . . . .________________________________|
| dynam-    |                                |
| isches    |           JscrollPane,         |
| Panel,    |           dynamisch            |
| was       |          füllt den Rest        |
| seine     |              aus               |
| breite    |                                |
| ändern    |                                |
| kann      |                                |
----------------------------------------------
Ich habe dafür ein GridBagLayout verwendet. Das Problem dabei ist, Dass JScrollPane kein richtiges PreferredSize liefert, da die Componente innerhalb ja größer oder kleiner sein kann. Ziel ist es, dass die beiden Panel oben und links fest stehen und sich das JScrollPane an den beiden und der komplett Fenstergröße anpasst. Würde man manuell die PreferredSize des JScrollPane setzen und dann das Fenster kleiner ziehen, so dass das Pane nicht mehr rein passt, dann fällt es immer zusammen, so dass nur noch die ScrollBar zu sehen ist.
Durch Interaktion des Users kann sich die Breite des linken Panels ändern (es zeigt Informationen und Optionen zum Inhalt des JScrollPanes an).

Momentan sieht der Code wie folgt aus:
Java:
GridBagLayout gbl=new GridBagLayout();
		setLayout(gbl);
		GridBagConstraints gbc=new GridBagConstraints();
		
		gbc.fill=GridBagConstraints.HORIZONTAL;
		gbc.insets = new Insets(2,2,2,2);  

		gbc.gridx = 0;
		gbc.gridy = 0;
		gbc.gridheight = 2;
		Options left = new Options(); //extends JPanel
		gbl.setConstraints(left, gbc);
		add(left);
		
		gbc.gridx=1; 
		gbc.gridy=0;
		gbc.gridheight = 1;
		Menu m=new Menu(imgl); //extends JPanel
		gbl.setConstraints(m, gbc);
		add(m);
		
		gbc.gridx=1; 
		gbc.gridy=1;
		gbc.gridheight = 1;
		StaffPanel staffpane=new StaffPanel(s,imgl,left);  //extends JPanel
		JScrollPane pane=new JScrollPane(staffpane);
		staffpane.setScrollPane(pane);
		gbl.setConstraints(pane, gbc);
		add(pane);
Weiß jemand, wie man das umsetzen kann?

Grüße,
Thomy
 
Zuletzt bearbeitet:
Ich würde
- BorderLayout verwenden
- als Menü ein JMenu nutzen und dies dann zum JWindow/JFrame mittels #setJMenuBar() hinzufügen, notfalls auch über BorderLayout.NORTH
- die beiden anderen in eine JSplitPane in BorderLayout.CENTER

GridBagLayout wäre mir dafür zu komplex.
 
Hab ich vergessen zu erwähnen: Mein Menü ist natürlich kein normales Menü, das hat paar spezial-Funktiontionen und ist mit dem JMenu nicht zu vergleichen.
Aber JSplitpane ist ein guter Tipp. Das guck ich mir mal an.
 
Zuletzt bearbeitet:
Danke, JSplitpane war genau das was ich gesucht habe. Ist sogar noch etwas besser geworden als ich dachte :)

Nachtrag: Das Zusammenfallen des JScrollPane muss irgendwie mit dem GridBagLayout zusammenhängen...
 
Zuletzt bearbeitet:
Zurück