2010-11-19 5 views
1

rowsorter를 사용하여 테이블을 정렬하려고합니다.정렬이 가능한 JTable 렌더러

저는 DefaultTableCellRenderer를 확장하는 렌더러를 사용하고 있습니다. 나는 렌더러를 사용하여 셀의 내용을 값에 따라 색을 칠한다.

cTable.setDefaultRenderer(Object.class,new <renderer name>()); 

예 :

public Component getTableCellRendererComponent(JTable table, Object v, 
      boolean isSelected, boolean hasFocus, int row, int column) 
    { 

     super.getTableCellRendererComponent(table, v, isSelected, hasFocus, 
        row, column); 
int k=table.getValueAt(row,column); 
    if (k >= 0)        this.setForeground(Color.red); 
} 

참고 :이 그냥 샘플 code.No 실제 기능입니다. 정렬 할 때 정렬이 완벽하게 수행되지만 색상을 변경하는 렌더러 기능이 발생하지 않습니다. 이 문제 이전에 직면 한 사람을 가지고 당신은 당신의 렌더러의 논리를 확장해야

답변

4

도와주세요 :

if (isSelected) { 
    this.setForeground(table.getSelectionForeground()); 
} else if (k >= 0) { 
    this.setForeground(Color.red); 
} else { 
    this.setForeground(table.getForegroundColor()); 
} 

당신은 또한 각 조건에 따라 배경색을 설정하실 수 있습니다. 그 이유는 DefaultTableCellRenderer이 "고무 도장"처럼 작동하여 차례대로 각 셀에 적용되기 때문입니다. 예를 들어, 행 5, 열 1의 값이 k> = 0이면이 셀과 모든 후속 셀에 대해 전경색을 빨간색 으로 전환합니다. 따라서 확인이 실패한 경우 은 명시 적으로 "보통"전경색으로을 다시 설정하는 것이 중요합니다.