2017-05-22 3 views
0

JTable에서 DefaultTableCellRenderer의 getTableCellRendererComponent 행에있는 모든 셀을 서로 인접하여 동일한 값으로 검색하는 방법은 무엇입니까? 내가 더 필요 .. 난 내가이어야 중심을 감지 할 수 있는지 확인 JTable이 서로 옆에있는 동일한 값 열에서 값을 제거합니다.

if(table.getValueAt(row, column-1) == value && table.getValueAt(row, column+1) == value) { 
    setValue("K") 
} 

을 시도 .. 다음 가운데 하나를 제외하고 모두에서 말했다 값을 제거해야하지만 3 개 셀이 같은 값을 가질 경우에만 작동합니다

+0

당신의 문제는 당신이 다른 세포를 테스트하기 전에 값을 변경, 그래서 조건이되지 않는 것입니다 후에 발생했다. – Nathan

+0

'DefaultTableCellRenderer '에서이 작업을 수행하는 것이 좋습니다. - 아니요. Renderer는 셀에 데이터를 표시하기위한 것입니다. Renderer는 처리 논리에 사용되지 않습니다. 귀하의 질문에 충분한 정보가 없습니다. 예를 들어 얼마나 많은 데이터 열이 있습니까? 행에 동일한 값을 가진 5 개의 열이 있으면 어떻게됩니까? 4 열은 어떨까요? 이 검사는 언제 수행합니까? 데이터가로드 될 때? 데이터를 변경할 수 있습니까? – camickr

+0

@camickr 어디서 붙여야합니까? –

답변

0

값을 변경하고 이후 비교했을 때 조건이 한 번만 트리거되었습니다. 당신은 전체 행을 통해 루프 각각 원하는 값과 동일 함을 확인 할 수

0

:

boolean same = true; 
for (int col = 0; col < columnCount; col++) { 
    if (table.getValueAt(row, col) != value) { 
     same = false; 
     break; 
    } 
} 
if (same) { 
    setValue("K"); 
} 
+0

DefaultTableCellRenderer의 재정의 된 getTableCellRendererComponent에서이 작업을 수행하는 것이 어떻습니까? 이것을 지정하기 위해 op를 편집했습니다 .. –

+0

'DefaultTableCellRenderer's에서 이것을하는 것은 어떻습니까? - 아니요. Renderer는 셀에 데이터를 표시하기위한 것입니다. Renderer는 처리 논리에 사용되지 않습니다. – camickr