JScrollPane will nicht scrollen!

macsx

Mitglied
Sers!

JFrame enthält 3 JPanel (untereinander).

Der unterste Panel soll ein Image mehrmals nebeneinander anzeigen und bei Bedarf sollte man vertikal scrollen können.

Code:
panelUnten = new JPanel();
        panelUnten.setLayout(new FlowLayout());
        panelUnten.setPreferredSize(new Dimension(50, 150));
        panelUnten.setBackground(new Color(250,250,230));
        jsp2 = new JScrollPane();
        port2 = jsp2.getViewport();
        ImageIcon image = new ImageIcon("pat.JPG");
        port2.add(new JLabel(image));
        port2.add(new JLabel(image));
        port2.add(new JLabel(image));
        panelUnten.add("Center", jsp2);
        add("South", panelUnten);

Nun zeigt er bei mir die Images immer untereinander an. Kann ich das ändern?!
 
Hast du es schon damit versucht?

Java:
JScrollPane jsp = new JScrollPane(/*"Element"*/, ScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);

Wo fügst du den ein Element zu der Komponente?
 
Danke erstmal für eure Hilfe, das Problem hat sich von selbst gelöst. Ich habe die Reihenfolge des "Aufeinandersetzens" der Komponenten vertauscht und obendrauf hab ich die PrefferedSize zu klein eingestellt.

Ich hatte:

Image auf JLabel auf JScrollPane auf JPanel auf JFrame



Richtig muss es sein:

Image auf JLabel auf JPanel auf JScrollPane auf JFrame


@Sascha

Die Image-Größe ist eigentlich uninteressant, da ich ja beabsichtige, scrollen zu können, wenn die Images in der Breite nicht mehr komplett sichtbar sind. Das JPanel soll also immer größer werden, umso mehr Bilder draufkommen.(alle nebeneinander)


Also falls es wen interessiert, wies klappt:

Code:
panelUnten = new JPanel();
        panelUnten.setMinimumSize(new Dimension(50, 150));
        panelUnten.setBackground(new Color(250,250,230));
        ImageIcon image = new ImageIcon("pat.JPG");
        panelUnten.add(new JLabel(image));
        panelUnten.add(new JLabel(image));
        panelUnten.add(new JLabel(image));
        jsp2 = new JScrollPane(panelUnten, JScrollPane.VERTICAL_SCROLLBAR_NEVER, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
        add("South", jsp2);



Hast du es schon damit versucht?

java Code:

1.
JScrollPane jsp = new JScrollPane(/*"Element"*/, ScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);


Wo fügst du den ein Element zu der Komponente?

@115%
Überprüfst du die Tipps die du hier gibts eigentlich auch?!:suspekt:

HORIZONTAL_SCROLLBAR_ALWAYS befindet sich nicht in ScrollPane sondern JScrollPane und falschherum sind deine Parameter auch:
public JScrollPane(Component view, int vspPolicy, int hsbPolicy) also zuerst vertikal, dann horizontal!
 
Wenn ich mich richtig erinnere, wird das Panel beim Flow-Layout aber nicht größer, da es die Komponenten dann untereinander anordnet.

MFG

Sascha
 
Das JPanel versucht soviele Images wie möglich nebeneinander darzustellen, falls die erste Reihe voll ist, wird natürlich in der nächsten weitergemacht. Dafür verwende ich dann auch das JScrollPane!! Dieses verhindert ja sozusagen diesen "Zeilenumbruch"!! Das JScrollPane hat ja keine feste Größe sondern passt sich den eingefügten Komponenten an!

macsx
 
Zurück