Panel zu Scrollpane adden

Dede1989

Mitglied
Hallo, ich habe folgendes Problem:

Ich möchte ein Panel, welches viele Instanzen von Canvas Objekten mittels Flowlayout nebeneinander bzw untereinander ausgibt, zu einem Scrollpane hinzufügen.

Dies will ich mach da es so viele Canvas Objekte sind, dass der ganze Bildschirm befüllt würde.

Das Panel hat eine feste Größe mittels panel.setSize(...) bekommen. Wenn ich das Panel nun zu dem Scrollpane adde tritt ein sonderbares Verhalten auf. Alle Canvas Objekte im Panel stehen nun nebeneinander anstatt das Sie , wie durch das FlowLayout definiert sich untereinander anordnen. Somit entsteht ein Scrollpane das ich ewig nach rechts verschieben kann.

Ich hoffe die Sachlage ist klar.

Vielen Dank für nützliche Antworten schon im vorraus 🙂
 
Das FlowLayout beherrscht keinen Zeilenumbruch. Das kann man vielleicht verhindern.... Aber erstmal: Du verwendest wirklich AWT (Panel, Canvas)? Kannst, darfst oder willst du nicht Swing (JPanel, JComponent) verwenden?
Du kannst dir mal http://www.java-forum.org/codeschnipsel-u-projekte/61445-extendedflowlayout-fuer-zeilenumbruch.html anschauen. Für alles weitere wäre ein KSKB aber trotzdem nicht verkehrt...

Also das verstehe ich nicht ganz, wenn ich das Panel ganz normal auf einem Frame darstelle, ohne das es auf einem Scrollpane ist, werden meine Canvas Objekte untereinander angeordnet sobald eine Zeile "voll" ist. Ja ich benutze AWT weil ich mich noch nicht mit Swing auseinandergesetzt habe. Aber das muss doch auch so gehen... wie gesagt ich kann heute Abend den Code mal posten...
 
na nun gibts ja schon mehr Infos,

ein normales Panel wird durchs umgebende Layout in der Größe begrenzt, deshalb kann der LayoutManager Umbruch einbauen,
mit einem JScrollPane ist diese Begrenzung ja gerade aufgebrochen, das Panel kann nicht nur beliebig hoch, sondern auch beliebig breit sein,

ob man nur die Breite begrenzen kann weiß ich nicht so genau,
erster Vorschlag wäre, ein richtiges senkrechtes Layout zu verwenden,
z.B.
How to Use BoxLayout (The Java™ Tutorials > Creating a GUI With JFC/Swing > Laying Out Components Within a Container)
 
Java:
public void LadeTileset() throws IOException
	{
		int breite,hoehe,spalten,zeilen;
		Panel hauptmenue = new Panel();
		hauptmenue.setSize(100,900);
		hauptmenue.setLocation(10, 50);
		hauptmenue.setLayout(new FlowLayout(FlowLayout.LEADING,1,1));
		BufferedImage tileset = ImageIO.read(new File("Woodland_Tileset.png"));
		breite= tileset.getWidth();
		hoehe= tileset.getHeight();
		spalten = breite/TILE_BREITE;
		zeilen  = hoehe/TILE_HOEHE;
		for(int i=0;i<zeilen;i++)
		{
			for(int j=0;j<spalten;j++)
			{
				hauptmenue.add(new Textur(tileset.getSubimage(j*32, i*32, TILE_BREITE, TILE_HOEHE), TILE_BREITE,TILE_HOEHE));
			}
		}
		ScrollPane sc = new ScrollPane();
		sc.setLocation(10,50);
		sc.setSize(200, 600);
		sc.add(hauptmenue);
		this.add(sc);
	}

Hier der Code🙂

Es wird ein Panel erzeugt und mit einem FlowLayout bestückt. Dann kriegt das Panel halt ganz viele Canvas Objekte. Zum Schluss wird noch ein Scrollpane initialisiert. Mittels sc.add(hauptmenue) wird das Panel angefügt und dann wiederrum alles an den Frame.

Ich kann auch mal zeigen wie es dann aussieht:

Imageshack - bildmitsc.png

Mit Scrollpane

Imageshack - bildohne.png

Und nur wenn ich das Panel adde ohne Scrollpane
 
Zuletzt bearbeitet:
mein Posting von 13:08 gelesen?
du kannst natürlich noch auf eine andere Antwort hoffen
 

Neue Themen


Zurück
Oben