일부 행의 색을 바꾸지 만 JTable에서는 모두가 아닙니다.
-
12-12-2019 - |
문제
이 작업을 수행하기 위해 사용자 정의 셀 렌더러 클래스를 만들었습니다.
public class MatchTableCellRenderer extends DefaultTableCellRenderer{
public Component getTableCellRendererComponent (JTable table,
Object obj, boolean isSelected, boolean hasFocus, int row, int column) {
Component cell;
cell = super.getTableCellRendererComponent(
table, obj, isSelected, hasFocus, row, column);
if( ((String[]) ((MatchTableModel) table.getModel()).getRow(row)).length==7 ){
System.out.println(((String[]) ((MatchTableModel) table.getModel()).getRow(row))[0]+" "+((String[]) ((MatchTableModel) table.getModel()).getRow(row))[6]);
cell.setForeground(Color.green);
}
return cell;
}
}
.
와이 테이블의 열 에서이 렌더러를 사용하도록 설정했습니다.
tempColumn = table.getColumnModel().getColumn(0);
tempColumn.setCellEditor(new MacColumnEditor());
tempColumn.setCellRenderer(new MatchTableCellRenderer());
tempColumn = table.getColumnModel().getColumn(1);
tempColumn.setCellEditor(new IpColumnEditor());
tempColumn.setCellRenderer(new MatchTableCellRenderer());
tempColumn = table.getColumnModel().getColumn(2);
DefaultCellEditor dfEditor=new DefaultCellEditor(new JTextField());
dfEditor.setClickCountToStart(2);
tempColumn.setCellEditor(dfEditor);
tempColumn.setCellRenderer(new MatchTableCellRenderer());
.
길이= 7 녹색의 문자열 []을 포함하는 행을 원하고 기본 색상으로 다른 색상이 필요합니다.그러나 모든 행이 녹색이되는 것은 흥미 롭습니다.나는 당신이 볼 수있는 인쇄 라인을 가지고 있습니다.그것은 4 번 인쇄됩니다 (내 테이블은 12 행이 있습니다). 그러나 모든 행은 4 대신 녹색으로 만들어집니다.
해결책
이유는 DefaultTableCelleDitor의 악명 높은 컬러 메모리 (TM)입니다. 하나의 지점에서만 색상을 설정해야합니다.
if (myCondition) {
setBackground(...) {
} else {
setBackground(...)
}
.
정확한 세부 사항은 최근 스레드
제휴하지 않습니다 StackOverflow