【发布时间】:2017-03-12 20:39:27
【问题描述】:
我在更改单元格颜色时遇到问题,当我更改第 5 列的单元格时,他并没有停在这里,他更改了下一个单元格... 这是我的代码:
public class MyRenderer extends DefaultTableCellRenderer {
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
int row, int column) {
Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
Etudiant E = new Etudiant();
if (column == 0) {
int id = E.getAIdEtud(table.getModel().getValueAt(row, 1).toString(), table.getModel().getValueAt(row, 2).toString());
if (E.IsRoudoublan(id) && E.IsExcclu(id)) {
c.setBackground(new java.awt.Color(0, 0, 255));
} else if (E.IsExcclu(id)) {
c.setBackground(new java.awt.Color(255, 0, 0));
} else if (E.IsRoudoublan(id)) {
c.setBackground(new java.awt.Color(20, 200, 0));
}
} else if (column == 5) {
if (Integer.parseInt(table.getModel().getValueAt(row, 5).toString()) >= 3) {
c.setBackground(new java.awt.Color(20, 200, 20));
}
} else {
c.setBackground(new java.awt.Color(100, 100, 100));
}
return c;
}
}
【问题讨论】:
-
getTableCellRendererComponent中报告的行/列是视图索引。您正在使用这些来查找模型中的值。使用JTable.convertRowIndexToModel和JTable.convertColumnIndexToModel获取关联的模型索引,用于查找模型中的值... -
另外,在
column == 5的部分中,您需要添加一个else部分来设置字符串为 的情况的颜色 -
我试过这个选项,但它不起作用
-
I tried this option, but it didn't work- 那么你的代码是错误的。再试一次。此外,您的渲染器不应检查该列。相反,您应该创建 2 个单独的渲染器。然后,您可以将每个渲染器添加到特定列。这将简化 if/else 逻辑,从而更容易发现错误。 -
如需尽快获得更好的帮助,请发帖minimal reproducible example 或Short, Self Contained, Correct Example。
标签: java swing colors tablecellrenderer