JPanel in JScollPane in JPanel

Cola_Colin

Top Contributor
Hi,

ich habe folgendes Szenario:

Java:
	public static void main(String[] args) {
		JFrame frame = new JFrame();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		JPanel panel1 = new JPanel();
		panel1.add(new JLabel("panel1"));
		panel1.setPreferredSize(new Dimension(200, 700));
		
		JPanel panel2 = new JPanel();
		panel2.add(new JTextArea("\n\n\n\n\n\n\n\ntest"));
		panel2.setPreferredSize(new Dimension(200, 200));		
		
		JScrollPane scrollPane = new JScrollPane(panel2);
		panel1.add(scrollPane);
		
		frame.add(panel1);
		frame.pack();
		frame.setLocationRelativeTo(null);
		frame.setVisible(true);
	}

Mein Problem ist schlicht: Das JScrollPane tut nichts, wenn ich das Panel um es drumpacke. Lasse ich panel 1 weg und füge das scrollPane direkt ins JFrame ein, geht alles.
Was mache ich da falsch ?
 
Ich erwarte, dass, wenn ich das Fenster kleinziehe eben Scrollbalken auftauchen und man den großen inneren Inhalt hin und her scrollen kann.
In meinem eigentlichen Fall habe ich überall das jgoodies FormLayout, damit habe ich das gleiche Problem.
 
FlowLayout ist in der Tat zu simpel dafür, gibt die Begrenztheit nicht an UnterKomponenten weiter, möchte ich behaupten,

verwende
Java:
panel1.setLayout(new BoxLayout(panel1, BoxLayout.Y_AXIS));
für panel1 (vor Einfügen von Komponenten darin), dann sieht es etwa genauso aus, mit Scrollen
 
Hmm, scheint in dem Beispiel wirklich dran zu liegen.
Im richtigen Fall sieht das Panel 1 aber eher so aus:

Java:
		FormLayout layout = new FormLayout("f:p:g", "f:p:g");
		PanelBuilder builder = new PanelBuilder(layout);
		JScrollPane scrollPane = new JScrollPane(panel2);
		builder.add(scrollPane, CC.xy(1, 1));

Also mit FormLayout von JGoodies.
Kennt sich jemand damit aus ? Es zeigt das gleiche Problem wie das FlowLayout.

EDIT:
Ist gelöst, es muss so aussehen:

[c]FormLayout layout = new FormLayout("f:10dlu:g", "f:10dlu:g");[/c]
 
Zuletzt bearbeitet:

Zurück
Oben