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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在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;
    }
}

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

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

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

答案

不要在最后使用for循环,而只是检查getTableCellRendererComponent参数中的行号是否与其中一个坏行匹配。如果是这样,将颜色设置为红色,如果不是黑色。

也许是这样的,

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

以上是关于如何在JTable中的特定行中设置颜色的主要内容,如果未能解决你的问题,请参考以下文章

在 DataGridViewComboBox 下拉列表中设置特定项目的颜色

在片段中设置文本颜色

如何在 JTable/JXTable 中设置列​​宽?

片段着色器中设置的颜色未显示 GLSL 1.30

如何在datagridview中设置指定行的背景颜色?

如何在 SwiftUI 列表中设置选定的行背景颜色?