【发布时间】:2018-12-26 01:25:32
【问题描述】:
我创建了一个自定义单元格渲染器来用特定颜色填充单元格。
public class ColorInCellRenderer extends DefaultTableCellRenderer
{
private final Map<Point, Color> cellColors = new HashMap<Point, Color>();
public void setCellColor(int row, int column, Color color)
{
if (color == null)
{
cellColors.remove(new Point(row, column));
}
else
{
cellColors.put(new Point(row, column), color);
}
}
private Color getCellColor(int row, int column)
{
Color color = cellColors.get(new Point(row, column));
return color;
}
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);
Color color = getCellColor(row, column);
c.setBackground(color);
return c;
}
}
我用它在jTable中添加一行,如下所示。
private void addTableRow(String type, String name, String rank, String notes, String location, Color color)
{
tableModel.addRow(new Object[]
{
type,
name,
rank,
notes,
location
});
colorInCellRenderer.setCellColor(tableModel.getRowCount() - 1, INDEX_OF_THE_COLOR_COLUMN, color);
JTable.repaint();
}
它可以正常工作并正确填充单元格。但是当我删除该行时,它不会删除填充的颜色单元格。而不是它,颜色列替换为下一行中的颜色单元格。我尝试在删除一行后重新绘制 jTable。但它不起作用。
【问题讨论】:
-
如需尽快获得更好的帮助,请发帖minimal reproducible example 或Short, Self Contained, Correct Example。
标签: java swing jtable tablecellrenderer