ScrollPane mit setLayout(null)

dary2003

Grünschnabel
Hallo Leute,
ich habe folgendes Problem:
Ich möchte in einem JFrame mehrere Swing-Komponente einfügen. Diese Komponente sollen durch setLayout(null) und setBounds an beliebige Positionen gesetzt werden. Da einige der Komponenten im Frame nicht mehr zu sehen sind, muss ich Scrollbars einbauen. Das funktioniert aber nicht. Im folgenden Beispiel versuche ich 10 Buttons zu erstellen und die verstekten dann durch Scrollen sichtbar machen. Was mache ich da falsch?
Bin für jede Hilfe dankbar...

dary


Code:
public scroll_test() {
super("...");

JPanel pn= new JPanel();

pn.setLayout(null);





for (int f=0; f<10; f++){

JButton b = new JButton("Button " + f);

b.setBounds(10,f*30+10,100,20);

pn.add(b); 

}



JScrollPane sp = new JScrollPane(pn);

sp.setPreferredSize(new Dimension(500, 500));

getContentPane().add(sp, BorderLayout.CENTER);

setLocation(100, 100);

setSize(495, 250);

setVisible(true);

}
 
Das funktioniert nicht mit null-Layout.
Sobald Du die Zeile

pn.setLayout( null );

z.B. änderst in

pn.setLayout(new GridLayout(10, 1, 5, 5));

dann ändert sich das Verhalten wie gewünscht.
 
Hi,

Code:
pn.setLayout(new GridLayout(10, 1, 5, 5));
ist schon ne Lösung. Die hilft mir aber leider nicht weiter, da die Swing-Komponente erst zur Laufzeit positioniert werden müssen und dann auch mit genauer Angabe bzw. Berechnung der x- und y-Koordinaten.

Trotzdem vielen Dank!
 
Hm, verstehe ich jetzt nicht wirklich, was Du da vor hast. Aber es dürfte bekannt sein, dass ich fast immer GridBagLayout bevorzuge. :)
 
Zurück