簡體   English   中英

當我只希望JTable為特定單元格着色時,JTable會為其着色

[英]JTable is coloring every cell when I only want it to color specific cells

private class ColorRenderer extends DefaultTableCellRenderer
{           
    String[][] data;    

    public ColorRenderer(String[][] data)
    {
        this.data = new String[data.length][data[0].length];

        for(int i = 0; i < data.length; i++)
        {
            for(int g = 0; g < data[0].length; g++)
            {
                this.data[i][g] = data[i][g];       
            }
        }

    }       

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

        if(row < data.length - 3 && data[row][col].equals(""))
        {               
            c.setBackground(Color.LIGHT_GRAY);
        }

        return c;
    }       
}   

data是填充JTable的數據數組。 該表主要是字符串,但是有一些空字符串。 我想在僅包含空字符串的單元格中上色,而不是最后三行。

但是由於某種原因,它現在在我的整個桌子上都是亂塗的,為什么?

在對DefaultTableCellRenderer.getTableCellRendererComponent的覆蓋中,在if語句之后添加else部分:

if(row < data.length - 3 && data[row][col].equals(""))
    c.setBackground(Color.LIGHT_GRAY);
else 
    c.setBackground(table.getBackground());

默認的表格單元格渲染器使用一個組件,該組件用於渲染每個單元格的內容。 更改顏色后,它將保留該顏色,直到顯式更改該顏色為止。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM