基于单元格值着色JTable行

时间:2016-01-16 15:50:29

标签: java swing colors jtable tablecellrenderer

我一直在尝试使用自定义TableCellRenderer为完整的JTable行着色,但出于某种原因,它只为我的第一个和最后一个单元格着色。

我想基于第二个和第四个值进行着色,在这种情况下:5和10.如果第二个值小于第四个值,则将其着色为红色。如果它的颜色相同则为黄色。

正如你在下面看到的那样它很好,但由于某种原因,它只会对第一个和最后一个单元格进行着色,而且我一直在撞墙试图让它工作。

Only the first and last cell are colored of the row

我认为我在覆盖的getTableCellRendererComponent中做错了什么:

public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int col) {
    super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, col);

    Integer minStock = (Integer) table.getModel().getValueAt(row, 3);
    Integer currentStock = (Integer) table.getModel().getValueAt(row, 1);

    if (Objects.equals(minStock, currentStock)) {
        setBackground(Color.YELLOW);
    } else if (minStock > currentStock) {
        setBackground(Color.RED);
    } else {
        setBackground(table.getBackground());
        setForeground(table.getForeground());
    }

    return this;
}

如果有人能告诉我如何解决这个问题,我将不胜感激!

0 个答案:

没有答案