首页 > Java > java教程 > 正文

如何刷新JTable中某行的背景颜色?

DDD
发布: 2024-11-22 07:23:11
原创
1015 人浏览过

How to Refresh the Background Color of a Row in a JTable?

刷新 JTable 中的行的背景颜色

问题:
尝试刷新背景颜色时JTable 中的一行,它仅在第一次迭代时有效并且失败

解决方案:

出现此问题是因为 ColorTable 类中的 setRowColor 方法没有重置后续行的背景颜色。要解决此问题,应修改代码如下:

public void resetColor(Color color) {
    for (int i = 0; i < this.getRowCount(); i++) {
        // Reset all rows to the specified color
        this.setRowColor(i, color);
    }
}
登录后复制

此外,为了防止所选行被着色,应在prepareRenderer方法中添加以下行:

if (rowSelection != null &amp;&amp; isRowSelected(row)) {
    continue;
}
登录后复制

这可确保所选行保持其默认背景颜色。

示例代码:

// Import necessary libraries...

public class ColorTable extends JTable {

    private static final long serialVersionUID = 1L;
    private Map rowColor = new HashMap();
    private Map columnColor = new HashMap();
    private Color cellColor;
    private Color defaultColor;

    public ColorTable(TableModel model) {
        super(model);
    }

    public void setRowColor(int row, Color c) {
        rowColor.put(new Integer(row), c);
    }

    // ... Other methods remain the same ...

    @Override
    public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {

        Component c = super.prepareRenderer(renderer, row, column);
        if (defaultColor == null) {
            defaultColor = c.getBackground();
        }

        // Color order is as follows:
        // rowSelection, checkBox toggle for row color, column color, cell color
        if (rowSelection != null &amp;&amp; isRowSelected(row)) {
            continue;
        }

        // ...

        return c;
    }

    // ... Other methods remain the same ...

}

// ... Other code remains the same ...
登录后复制

以上是如何刷新JTable中某行的背景颜色?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板