首頁 >Java >java教程 >如何刷新JTable中某行的背景顏色?

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

DDD
DDD原創
2024-11-22 07:23:111062瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn