2017-10-26 6 views
-1

Ich habe einen Swan JPanel mit einem GridBagLayout mit einem JLabel (Bild) und eine JList in einem JScrollPane jeweils 50% der Breite.zwingen horizontale Bildlaufleiste auf JScrollPane in Rasterbeutellayout

Das funktioniert gut, außer wenn ich der JList eine wirklich lange Zeichenfolge hinzufüge. Anstatt JScrollPane horizontal zu scrollen, nimmt JScrollPane dann den gesamten Bereich des JPanels und hinterlässt ein kleines Bild in JLabel.

Seltsame Sache ist, wenn ich die Größe des Fensters kleiner als die Breite der langen Zeichenfolge, dann beginnt es mit der horizontalen Bildlauf und geht zurück auf 50%/50% Breite.

Wie kann ich die JList zwingen, immer die Rolle zu verwenden und nur 50% der Breite zu nehmen?

(muss GridBagLayout verwenden)

Hacks gern gesehen, endete

+2

Sie haben lange genug hier, um zu wissen, wie diese Seite funktioniert ... Sie kommen mit einem [MCVE] und wir können von dort sagen, was los ist ... – Frakcool

+1

Viele Wege dies geschehen könnte. Wenden Sie ein "Weightx" von "0,5" oder größer auf jede Komponente an, um das Problem zu lösen. Gleichermaßen würde die Verwendung eines 'GridLayout' dasselbe Ergebnis liefern. – MadProgrammer

+0

Haben Sie versucht, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS ... zu verwenden? – Ansharja

Antwort

0

ich diese bis zur Festsetzung von einem sehr kleinen preferedSize auf der scrollpane Einstellung. Dies scheint die Bildlaufleiste aus irgendeinem Grund zu verwenden und bleibt bei 50% der Breite.

JScrollPane scroll = new JScrollPane(); 
scroll.setPreferredSize(new Dimension(40, 40)); 
JList list = new JList(); 
scroll.setViewportView(list); 
parent.add(scroll, new GridBagConstraints(x,y,1,1, xWeight,yWeight, GridBagConstraints.CENTER,GridBagConstraints.BOTH, insets, 0,0)); 
Verwandte Themen