我已經創建了一個自定義單元格渲染器類來實現此目的。更改JTable中某些行的顏色但不是全部
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());
我想它含有的String []長度= 7綠色行和其他有默認的顏色。但有趣的是,我所有的行都變成了綠色。你可以看到我有一條打印線。它被打印4次(我的桌子有12行),但所有的行都是綠色的,而不是4個。我做錯了什麼?
你給我的線程幫了很多。謝謝。現在我還有一個問題。在表格排序後,我需要突出顯示才能正常工作:/ – Alptugay 2012-07-27 11:02:28
convertRowIndexToModel(row) – kleopatra 2012-07-27 11:13:42