2010-06-13 7 views
0

부울 필드가있는 클래스가 있습니다. JTable에 해당 클래스 목록을 표시합니다. CustomCellRenderer를 만들어 행의 배경색을 변경하여 다른 색상을 사용할 수 있습니다.특정 JTable 셀의 CustomCellRenderer에서 DefaulCelleRenderer를 호출하는 방법

문제 : 부울 필드에 customrenderer를 적용하면 기본 렌더러의 확인란 대신 (true/false)가 렌더링됩니다.

어떻게 배경색과 확인란을 모두 사용할 수 있습니까? 사전에 어떤 도움

public class CustomCellRenderer extends DefaultTableCellRenderer { 

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

     Component cell = super.getTableCellRendererComponent(table, obj,isSelected, hasFocus, row, column); 

     if (isSelected) { 
      cell.setBackground(Color.red); 
     } else { 
      if (row % 2 == 0) { 
       cell.setBackground(new Color(110,134,214)); 

      } else { 
       cell.setBackground(Color.lightGray); 

      } 
     } 
     return cell; 
    } 
} 

감사 : 여기

는 인 CustomRenderer 코드입니다.

답변

0

알겠습니다.

add a check box to only one cell in a JTable

나는 내가하여 CustomCellRenderer의 getTableCellRendererComponent 방법에서 호출 BooleanRenderer을 사용 :

나는이 발견했다.

public Component getTableCellRendererComponent(JTable table, Object value, 
      boolean isSelected, boolean hasFocus, int row, int column) { 
     //delegate if boolean 
     if(value instanceof Boolean) return booleanRenderer.getTableCellRendererComponent(table,value,isSelected,hasFocus,row,column); 
     if (isSelected) { 
      setBackground(selectedColor); 
      setForeground(unSelectedColorWhite); 
     } else { 
      if (row % 2 == 0) { 
       setBackground(unSelectedColorBlue); 
      } else { 
       setBackground(unSelectedColorWhite); 
      } 
      setForeground(selectedColor); 
     } 
     setText(" " + table.getValueAt(row, column)); 
     selected = isSelected; 

     return this; 
    } 
:

난 그냥이 방법으로 렌더링을 대리자를 한 줄을 추가

관련 문제