JList에서 사용자 정의 렌더러를 사용하고 있지만 렌더링 된 구성 요소 중 하나도 액세스 할 수 없습니다.JList에서 구성 요소의 이벤트를 활성화하는 방법
list.setCellRenderer(new ListCellRenderer() {
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
JCheckBox c = new JCheckBox();
JButton b = new JButton("My Button!");
JPanel p = new JPanel(new FlowLayout());
p.add(c);
p.add(b);
if (isSelected) {
p.setBackground(Color.LIGHT_GRAY);
}
return p;
}
});
확인란이나 버튼을 클릭해도 아무런 변화가 없습니다. 또한 버튼에 ActionListener를 추가하려고 시도했지만 클릭 한 상태에서는 실행되지 않았습니다. 선택한 항목이있는 동안 배경색 만 작동하는 유일한 것입니다 (스크린 샷 참조).
버튼을 클릭해도 "클릭 애니메이션"이 없습니다.
alt text http://foto.darth.cz/pictures/2009-05-19_151057.png
그래서 제 질문은, 내가 렌더링 구성 요소에 고르게을 가능하게 다른 뭔가를해야합니까?
참고로, 렌더러의 새로운 구성 요소를 만드는 것은 좋은 생각이 아닙니다. 렌더러는 고무 스탬프라고 생각하십시오. 목록은 목록 항목을 기반으로 내용을 변경 한 다음 렌더러를 그래픽 영역에 스탬프 처리합니다. 매번 메모리를 낭비하고 가비지 컬렉터를 불만족스럽게 만들 때마다 새로운 것을 만들면 – basszero