繁体   English   中英

如何在JTable中的特定行中设置颜色

[英]How to set color in a specific row in JTable

我想为表格中的特定行设置颜色。 我已经实现了getBadRows()方法,该方法返回带有要突出显示的键(行数)的Map。 看我的代码:

private static class WorkingTimeCellRenderer extends DefaultTableCellRenderer {
    @Override
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
                                                   boolean hasFocus, int row, int column) {
        if (value instanceof Date) {
            value = new SimpleDateFormat("dd.MM.yyyy").format(value);
        }
        Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
        WorkingTimeTableModel model = (WorkingTimeTableModel) table.getModel();

        for (Map.Entry<String, Integer> r : model.getBadRows().entrySet()) {
            c.setForeground(row == Integer.parseInt(r.getKey()) ? Color.RED : Color.BLACK);
        }

        return c;
    }
}

例如,当我在地图中有四个项目时,此方法仅突出显示地图中的最后一个项目。 以前的项目未突出显示,因为在调用c.setForeground()时看起来总是会刷新。

我想突出显示存储在我的地图中的行。 Map的键与表中的行索引相对应。

我不知道该怎么做:(我已经尝试了很多方法。

不要在末尾使用for循环,而只需检查getTableCellRendererComponent参数中的行号是否与错误行之一匹配。 如果是这样,请将“颜色”设置为红色,如果不是黑色。

也许像

Color color = model.getBadRows().contains(row) ? Color.RED : Color.BLACK;
c.setForeground(color);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM