2012-04-04 3 views
0

해결할 수없는 이상한 문제가 있습니다. JList이 있는데 더 많은 항목이 있으면 표시 할 수 있어야합니다. 나는 JScrollPaneJList를 넣어 경우, 그것은에 년대 BorderLayoutEAST 부분의 전체 높이를 사용하지 않는JScrollPane의 JList가 JPanel 높이를 엉망으로 만듭니다.

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

예와 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); 
} 

12,394,내가 그것에서 년대 BorderLayout의 동쪽 부분의 전체 사용 가능한 높이를 활용하는 JList를 원한다. 나는 내 JListJPanel 다른 내부 포장 시도했지만, 그 중 하나가 내 문제가 해결되지 않습니다.

답변

0

내가 전에 성공적으로 사용한 해킹은 JList/JScrollPane의 부모 구성 요소에 ComponentListener를 추가하는 것입니다. 변경되면 (의사 코드) setPreferredSize (또는 JScrollPane)를 통해 JList 및/또는 Jscrollpane의 기본 크기가 재설정됩니다. getPreferredSize(). width, parentHeight)

1

JList에서 보이는 행 수를 설정하는 setVisibleRowCount() 메소드를 사용하십시오. users.setVisibleRowCount (10);