【问题标题】:Removing added custom cell renderer删除添加的自定义单元格渲染器
【发布时间】: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。但它不起作用。

【问题讨论】:

标签: java swing jtable tablecellrenderer


【解决方案1】:

但是当我删除行时,它不会删除填充的颜色单元格。

因为您将要绘制的单元格存储在“cellColors”Map

当您从表格中删除一行时,您还需要从地图中删除该点。

您可以将TableModelListener 添加到 TableModel。删除行时会通知您,然后您也可以从地图中删除该点。

【讨论】:

    猜你喜欢
    • 2019-10-13
    • 1970-01-01
    • 2023-01-12
    • 2015-01-01
    • 1970-01-01
    • 2011-11-08
    • 1970-01-01
    • 2012-08-05
    相关资源
    最近更新 更多