JList - Verwenden Sie eine vertikale Bildlaufleiste anstelle von horizontal mit einer vertikalen Wrap-Ausrichtung?

8

Ich versuche, ein JList innerhalb eines JScrollPane zu platzieren und listet die Einträge in vertikalen Spalten wie folgt alphabetisch auf:

%Vor%

Wenn der JList jedoch nicht mehr genügend Platz hat, um weitere Einträge anzuzeigen, möchte ich, dass JScrollPane nur in vertikaler Richtung blättert.

Das funktioniert, wenn ich VERTICAL_WRAP verwende. Wie auch immer, es sieht so aus, als ob ich bei Verwendung von vertikalem Wrap eine horizontale Bildlaufleiste bekomme und wenn ich HORIZONTAL_WRAP verwende, bekomme ich die Bildlaufleiste, die ich möchte, aber die Objekte werden in einer Reihenfolge platziert, die ich nicht mag. Kann ich meinen Kuchen essen und essen? Hier ist ein einfaches Beispiel für das, was ich versuche.

Dies ist der nächste, den ich bekommen könnte, aber ich möchte in der Lage sein, vertikal zu scrollen, während die vertikale alphabetische Reihenfolge beibehalten wird.

%Vor%

Eine Lösung, die ich habe, ist: Wenn die Zellengröße bekannt ist, kann ich einen Komponentenlistener erstellen und auf ein Größenänderungsereignis warten. Wenn dieses Ereignis ausgelöst wird, kann ich die gewünschte Zeilenanzahl berechnen, um horizontales Scrollen zu verhindern. Dies scheint nur ein Hack zu sein, und ich bin nicht sicher, wie es mit Textkomponenten variabler Größe funktionieren könnte.

    
Lockyer 02.02.2012, 19:33
quelle

3 Antworten

2

Ich denke, Ihre Lösung ist in Ordnung, und überhaupt kein Hack. Jedes eingebaute Feature müsste sowieso immer dasselbe tun.

Hier ist eine Modifikation Ihres Beispiels, die das macht, was Sie wollen.

%Vor%     
Kevin K 03.02.2012, 18:38
quelle
0

Wollen Sie das? (Muss die bevorzugte Größe ändern ...)

%Vor%     
LazyCubicleMonkey 03.02.2012 05:46
quelle
0

Brilliant Code @Kevin K ... Ich schlage eine kleine Modifikation vor, um ArithmeticException (Division durch Null) zu vermeiden.

%Vor%     
Srikrishnan 29.11.2012 11:06
quelle