2009-07-02 2 views

답변

14

JList 셀의 모양을 사용자 정의하려면 ListCellRenderer의 구현을 직접 작성해야합니다.

class의 샘플 구현은 다음과 같이 보일 수 있습니다 : (테스트하지 러프 스케치)

public class MyListCellThing extends JLabel implements ListCellRenderer { 

    public MyListCellThing() { 
     setOpaque(true); 
    } 

    public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { 
     // Assumes the stuff in the list has a pretty toString 
     setText(value.toString()); 

     // based on the index you set the color. This produces the every other effect. 
     if (index % 2 == 0) setBackground(Color.RED); 
     else setBackground(Color.BLUE); 

     return this; 
    } 
} 

이 렌더러를 사용하려면를,이 코드를 넣어 당신의 JList의 생성자에서 :

setCellRenderer(new MyListCellThing()); 

선택 및 포커스가있는 셀의 동작을 변경하려면 제공된 부울 값을 사용하십시오.

+0

주의 행을 선택하는 경우 (색상이 바뀌는 경우)를 처리해야합니다. –

+0

예, 게시물 하단에 언급했습니다. – jjnguy

+0

사소한 nitpick : setBackgroundColor보다는 setBackground 여야합니다. – ataylor