LayoutManager JPanel wächst beim adden neuer JButtons nicht mit

Kenan89

Bekanntes Mitglied
Hallo Leute,

ich habe in meinem Projekt ein Panel, worin JButtons reingeladen werden, undzwar so viele wie es in einem Ordner Bilder gibt. Die Buttons kriegen nämlich als ImageIcon ein Bild.

Das Problem ist, dass mein scrollpane keine Balken anzeigt. Der Panel müsste doch mitwachsen, wenn neue Inhalte geaddet werden, oder?

Code:
Java:
	public void loadRest(String p){
		for(int i=0; i<files.length; i++){
			add(new Thumbnail(screen, files[i]));
                        setPreferredSize(getSize());
                        System.out.println(getSize());
			scrollpane.setViewportView(this);
		}
	}

Die Klasse Thumbnail erbt von JButton.
Die Klasse worin sich die o.g. Methode befindet ist ein JPanel mit dem Layout FLowLayout.

Für Tipps, Hinweise danke im voraus.
 
was liefert die Ausgabe von getSize() in der Schleife?
falls sich da was tut sollte setPreferredSize() nicht besonders nötig sein,
falls sich nichts tut, bringt der Aufruf keinen Vorteil oder?

in der Schleife x-fach scrollpane.setViewportView(this); aufrufen ist auch zuviel,
maximal einmal am Ende, bzw. gar nicht wenn schon drin

validate();
repaint();
nach GUI-Änderungen könnte wie immer helfen, auf dem Panel oder dem JScrollPane oder ultimativ auf dem JFrame

ein vollständiges Testprogramm ließe testen, so nur als Tipp mit Hoffung auf Hilfe
 
setPreferredSize(getSize());
ist falsch. Es KANN dann ja nicht mehr mitwachsen: Du sagst damit, dass es behaupten soll, es wäre gerne so groß, wie es schon ist. Anosnsten: Welches Layout hast du? GridLayout(1,0) ? Dann braucht man kein setPreferredSize, und ein "validate" nach der Schleife sollte es schon tun.
 
Also es gibt einen Testprogramm. Nämlich das ganze Programm, zu der ich bereits eine Frage gestellt hatte.
Nur hätte diese Swing Frage nicht in den anderen Thread gepasst.

Das Testprogramm befindet sich hier:
Testprogramm im ersten Beitrag als Anhang

Da werdet ihr dann sehen, dass der Scrollpane keinen Balken anzeigt.
Dafür müsst ihr nur den Pfad in der Klasse Exe in package exe in ein Verzeichnis mit vielen Bildern setzen.
z.B.: C:\\users\\bla\\ordner\\bla.png - Der Pfad muss mit einem Bild angegeben werden, sonst werden die restlichen Bilder im Pfad nicht mitgespeichert.

validate() habe ich ausprobiert, leider keine Lösung.
 
wie schon erwähnt
Code:
setPreferredSize(getSize());
macht imho den eindruck, dass es dort hapert.
 

Zurück
Oben