2010-05-18 2 views
5

나는 JListJComboBox을 알고 있습니다. JList에서 제공하는 여러 선택 기능으로 콤보 상자 드롭 다운 기능이 필요합니다.여러 항목을 선택하여 java swing에서 드롭 다운 목록을 만드는 방법은 무엇입니까?

목록의 내용이 너무 커서 간단한 목록을 사용하여 표시 할 수 없기 때문입니다. 여러 항목을 선택해야합니다. 그렇지 않으면 콘텐츠가 JComboBox 일 것입니다.

제안 사항?

답변

7

다중 선택을 사용하는 경우 콤보 상자보다 목록을 사용하는 것이 좋습니다. GUI 메타포가 진행됨에 따라 사람들은 콤보 상자가 단일 선택 일 것으로 예상하지만 목록은 둘 중 하나 일 수 있습니다.

목록의 내용은 JScrollPane에 간단한 목록을

놓습니다 JList을 사용하여 표시하기에 너무 거대하다. JList에서 setVisibleRowCount(int)으로 전화하여 한 번에 표시 할 수있는 행 수를 지정할 수 있습니다.

3

콤보 상자에 대한 사용자 정의 셀 렌더러를 만들고 해당 구성 요소에 체크 상자를 추가하여 확인란을 선택하거나 선택 취소 할 수 있습니다. 이 같은 것을 확인해야합니다 : 데이터가 계층 문자가

public class MyComboBoxRenderer implements ListCellRenderer { 

    private String[] items; 
    private boolean[] selected; 

    public MyComboBoxRenderer(String[] items){ 
     this.items = items; 
     this.selected = new boolean[items.lenght]; 
    } 

    public Component getListCellRendererComponent(JTable table, Object value, 
      boolean isSelected, boolean hasFocus, int index) { 
     // Create here a JLabel with the text 
     // Create here a JCheckBox 
     // Add them to a layoutmanager 
     return this; 
    } 

    public void setSelected(int i, boolean flag) 
    { 
     this.selected[i] = flag; 
    } 

} 
+0

이 클래스는 필수가 반환 형식을하기 위해 Component''의 일부 하위 유형 확장을 'getListCellRendererComponent()'와 일치하는지,'return this; '를 원한다면. 작성한 레이블을 반환하려면 원본을 확인해야합니다 (실제로 이해하지 못합니다). 그리고이'setSelected() '는 어디에서 온 것입니까? 모든 코드를 게시하는 것이 가장 좋습니다. – FaithReaper

0

설명 된 기능을 수행하기 위해 마침내 JMenuBar을 "남용"하고이를 여러 개의 JCheckBoxMenuItems에 추가하기로 결정했습니다. 그런 다음 GUI는 완벽하게 목적에 맞습니다 (적어도 나를 위해), 조금 짜증나는 위험이있는 ItemEvent를 처리하는 것입니다.

는 (결국이 나는 아이템을 통해 일부 비트 로직을 정의하고 이벤트의 한 종류 처리에 자신을 제한 할 수 있습니다)

관련 문제