2012-02-27 4 views
3

JFrame과 함께 크기가 커지는 JList가 있습니다. 나는 다음과 같은 코드를 가지고 : 나는 setVisibleRowCount 방법에 대한 몇 가지 값을 설정하면JList의 동적 표시 행 개수

defaultListModel = new DefaultListModel<SData>(); 
for (String string: listOfStrings) { 
    defaultListModel.addElement(string); 
} 
jList = new JList<String>(defaultListModel); 
jList.setCellRenderer(jListCellRenderer); 
jList.addListSelectionListener(new ListSelectionListener() { 
    public void valueChanged(ListSelectionEvent arg0) { 
     //codes to go 
    } 
}); 
jList.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); 
jList.setLayoutOrientation(JList.VERTICAL_WRAP); 
scrollPane = new JScrollPane(jList); 

, 행 번호가 고정된다을 내가 값을 설정하지 않으면 8의 기본 값은 재생 온다. 이 값을 동적으로 변경하고 싶습니다.

+0

visibleRowCount를 제어 할 대상은 무엇입니까? 그것이 무엇이든 그 속성을 듣고 그에 따라 visibleRowCount를 업데이트하십시오. – kleopatra

+0

빨리 도움을 받으려면 [SSCCE] (http://sscce.org/)를 게시하십시오. –

+0

'JList'의'Size'가'setVisibleRowCount()'를 제어해야합니다. – Ahamed

답변

4

난 그냥 jList.setVisibleRowCount(0) JList의 크기를 조정할 때 자체 조정할 것으로 나타났습니다.

+1

+1 음수 값도 작동합니다. ['getPreferredScrollableViewportSize()'] (http://docs.oracle.com/javase/7/docs/api/javax/swing/JList.html#getPreferredScrollableViewportSize%28%29)도 참조하십시오. – trashgod

+1

@trashgod,'setVisibleRowCount' 메쏘드 안에서, 그들은 max (0, paramRowCount)를 검사하고 있었기 때문에, 음수 나 0을 보내는 것이 중요하지 않습니다. 0이됩니다. :) – Ahamed

1

Echoing @ kleopatras 님의 의견이 명확하지 않습니다. setVisibleRowCount(). 이 example은 행이 추가 될 때 미리 정의 된 한계까지 추가 될 때 Window을 포함하는 크기가 커지면 스크롤바가 대신됩니다. @ 아이디어가 제시 한대로 아이디어를 줄 수도 있고 sscce의 기초로 사용할 수도 있습니다.

부록 : JList의 크기가 카운트를 제어하는 ​​경우 모델의 size()의 절반부터 시작합니다. 그런 다음 미리 정의 된 제한에 고정 된 고정 비율로 모델에 추가 된 n에 대해 하나의 보이는 행을 추가하십시오. 신뢰할 수있는 개수를 유지하려면 자체 ListModel을 구현하거나 DefaultListModel에있는 변경자를 재정의해야합니다.

+0

'JList'의'Size'가'setVisibleRowCount()'를 제어해야합니다. – Ahamed

+0

나는 정교합니다. – trashgod