2012-04-04 6 views
0

Ich habe ein seltsames Problem, das ich nicht lösen kann scheinen. Ich habe eine JList, die in der Lage sein muss, einen Bildlauf durchzuführen, wenn mehr Elemente vorhanden sind, die angezeigt werden können. Allerdings, wenn ich die JList in einem JScrollPane setzen, ist es nicht die volle Höhe des EAST Teil des BorderLayout nutzen es in istJList in JScrollPane vermasselt JPanel Höhe

Beispiel ohne JScrollPane.

public UsersPanel(){ 
    String[] userList = new String[]{"Foo","Bar","Foo","Bar","Foo","Bar","Foo","Bar","Foo","Bar","Foo","Bar","Foo","Bar"}; 
    JList users = new JList(userList); 
    add(users); 
} 

Example without JScrollPane

Beispiel mit JScrollPane:

public UsersPanel(){ 
    String[] userList = new String[]{"Foo","Bar","Foo","Bar","Foo","Bar","Foo","Bar","Foo","Bar","Foo","Bar","Foo","Bar"}; 
    JList users = new JList(userList); 

    JScrollPane sp = new JScrollPane(users); 

    add(sp); 
} 

Example with JScrollPane

ich JList möchten, dass die volle zur Verfügung stehende Höhe des östlichen Teils des BorderLayout es in verwendet. Ich habe versucht, meine JList in einem anderen JPanel Einwickeln, aber das ist mein Problem nicht entweder lösen.

Antwort

0

Ein Hack, den ich zuvor erfolgreich verwendet habe, ist, einen ComponentListener zu der übergeordneten Komponente der JList/JScrollPane hinzuzufügen, und bei der Änderung die bevorzugte Größe der JList und/oder Jscrollpane über (Pseudocode) setPreferredSize (getPreferredSize(). width, parentHeight)

1

Verwenden Sie die Methode setVisibleRowCount(), um die Anzahl der sichtbaren Zeilen in Jlist festzulegen. users.setVisibleRowCount (10);