2012-02-22 4 views
1

나는이 8x8 테이블을 가지고 있으며 테이블의 맨 위에 빨간색으로 첫 번째와 두 번째 셀의 그리드를 채색하고 싶습니다. 내 질문에이 일이 가능할까요?Java의 JTable 착색 특정 그리드 라인

+1

가능한 [Java 색칠 표 행] (http://stackoverflow.com/questions/2004197/java-coloring-a-table-row) (행 채우기에 관계없이 동일한 방법입니다. 열 또는 개별 셀) – DNA

+0

가능한 복제본 [jtable 채색] (http://stackoverflow.com/questions/9405206/jtable-coloring) –

답변

3

편집 : OP가 원하는 것이 아니기 때문에 이것을 삭제했습니다. 나는 OP의 요청에 그것을 취소하고있다.

나는이 8 × 8의 테이블을 가지고 있고 나는 빨간색 테이블의 맨 위에 첫 의 그리드와 두 번째 셀을 색상을합니다. 제 질문은 입니다. 가능합니까?

물론 있습니다.

기존 렌더러를 확장하고 getTableCellRendererComponent 메서드를 재정의하는 것이 한 가지 방법입니다. 예를 들어

:

그런 다음 당신은 특정 유형의 데이터에 대한이 렌더러를 사용하려는 JTable가 경고를 할 필요가
public class GridlineCellRenderer extends DefaultTableCellRenderer { 

    @Override 
    public Component getTableCellRendererComponent (
     JTable table, 
     Object value, 
     boolean isSelected, 
     boolean hasFocus, 
     int row, 
     int column 
    ) { 
     final Component cell = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); 
     if (row == 0 && (column == 0 || column ==1) { 
      cell.setBackground(Color.RED); 
     } 
     return cell; 
    } 
} 

.

예를 들어

당신이 정수를 포함하는 셀이를 사용하려는 경우, 다음과 같은 작업을해야합니다 :

JTable myJTable = ... 
myJTable.setDefaultRenderer(Integer.class, new GridlineCellRenderer()); 
+0

그건 좋은 반응입니다! – thermz

+0

음, 배경을 채색하지 않고 그 두 셀의 눈금 선을 채색한다는 뜻입니까? – user1110191

+0

내가 보았던 명령은 전체 그리드를 색칠하는 것이지만 특정 셀의 그리드 라인을 채색하는 것이 아닙니다. – user1110191

3

당신이 아니라 유형과 위치를 기반으로 특정 세포에 영향을 prepareRenderer()을 무시하고 구성 요소를 반환 할 때문에 원하는 세포에 대해 빨간색 Border을 갖는다. How to Use Tables을 참조하십시오.

+0

+1은 국경에 대한 것입니다. 가장 눈에 띄지는 않지만, 가장 가까운 것은 눈금 선을 칠할 수 있습니다. 함께 표시, 이중 눈금을주는 – kleopatra

+0

@ kleopatra : 좋은 지적; 눈금 및 배경색은 L & F에 따라 다릅니다. Aqua는 둘 다 흰색을 기본으로 사용하지만 Metal은 흰색의 슬레이트 - 파랑을 사용합니다. – trashgod