根据JTable中的第一列值着色特定行?

我正在尝试根据JTable的第一列值为特定行着色,但下面的代码根据行的索引对行进行着色。 我的表只有四列。 第一列有ID号。 我需要根据这些ID号对行进行着色。 例如,如果第一个ID为0而第二个ID也为0,则它​​们都应为“lightGray”。 好吗,拜托?

 table_1 = new JTable(){ public Component prepareRenderer(TableCellRenderer renderer,int Index_row, int Index_col) { Component comp = super.prepareRenderer(renderer,Index_row, Index_col); //even index, selected or not selected if (Index_row % 2==0 && !isCellSelected(Index_row, Index_col)) { comp.setBackground(Color.lightGray); } else { comp.setBackground(Color.white); } return comp; } }; 

以下是它现在的样子:

应该怎么样

您的渲染器根据传递给prepareRenderer()row参数选择颜色。 谓词row % 2 == 0选择交替行进行着色,如图所示。 您的问题意味着您实际上希望以第0列ID的值为基础进行着色。 为此,您需要检查getValueAt(row, 0)

确切的配方取决于您的型号。 使用此示例 ,以下渲染器将以字母“T”开头的行进行着色。

 private JTable table = new JTable(dataModel) { @Override public Component prepareRenderer(TableCellRenderer renderer, int row, int col) { Component comp = super.prepareRenderer(renderer, row, col); int modelRow = convertRowIndexToModel(row); if (((String) dataModel.getValueAt(modelRow, 0)).startsWith("T") && !isCellSelected(row, col)) { comp.setBackground(Color.lightGray); } else { comp.setBackground(Color.white); } return comp; } }; 

图片

附录:@mKorbel帮助评论在启用排序时需要在模型视图坐标之间进行转换,如此处所述。