두 개의 JTables tblOrderInfo 및 tblDetailInfo가 있습니다. tblDetailInfo 행을 기준으로 tblOrderInfo 행을 색칠하고 싶습니다. 많은 연구를 수행했으며 Rob Camick's 문서 및 기타 많은 기사를 찾았지만 색칠 기반 정적 값 확인 및 JTable 동적 필터링 내 경우에는 작동하지 않습니다.JTable 행의 색 변경
Rob의 접근 방식을 사용하여 기능을 시도했지만 작동하지 않습니다.
private Component createColoring(DefaultTableModel model)
{
tblOrderInfo = new JTable(model)
{
public Component prepareRenderer(TableCellRenderer renderer, int row, int column)
{
Component c = super.prepareRenderer(renderer, row, column);
// Color row based on a cell value
if (!isRowSelected(row))
{
c.setBackground(getBackground());
int modelRow = convertRowIndexToModel(row);
String type = (String)getModel().getValueAt(modelRow, 0);
Object orderId="";
Object design="";
Object sno="";
for(int r=0;r< tblDetailInfo.getRowCount();r++){
orderId= tblDetailInfo.getValueAt(r, util.getColumnIndex(tblDetailInfo, "orderId"));
design= tblDetailInfo.getValueAt(r, util.getColumnIndex(tblDetailInfo, "design"));
sno= tblDetailInfo.getValueAt(r, util.getColumnIndex(tblDetailInfo, "sno"));
for(int o=0;o< tblOrderInfo.getRowCount();o++){
if((tblOrderInfo.getValueAt(o, util.getColumnIndex(tblOrderInfo, "orderId")).equals(orderId))
&& (tblOrderInfo.getValueAt(o, util.getColumnIndex(tblOrderInfo, "design")).equals(design))
&& (tblOrderInfo.getValueAt(o, util.getColumnIndex(tblOrderInfo, "sno")).equals(sno))
){
c.setForeground(Color.RED);
}
}
}
}
return c;
}
};
tblOrderInfo.setPreferredScrollableViewportSize(tblOrderInfo.getPreferredSize());
tblOrderInfo.changeSelection(0, 0, false, false);
tblOrderInfo.setAutoCreateRowSorter(true);
return tblOrderInfo;
}
호출 코드는 prepareRenderer() 메소드가 기본적인 코드 구조가 잘못 때문에 모든 셀이라고
DefaultTableModel dtm =(DefaultTableModel) tblOrderInfo.getModel();
jScrollPane2.remove(tblOrderInfo);
jScrollPane2.add(createColoring(dtm));
감사합니다. @Camickr 제 실수를 인정합니다. 내 골동품이 잘못 탈락했다. 내 실수를 지적 주셔서 감사합니다. –
친애하는 @Camickr은 브레이크 로직으로 다시 테스트되지만 작동하지 않으며 주문 테이블의 모든 행에 색상이 지정됩니다. –
방금 휴식 시간을 추가하는 것보다 더 많은 변경을해야한다고 제안했습니다. 나는 2 개의 루프가 필요 없다고 제안했다. 코드를 작성할 수 없습니다. – camickr