ホームページ  >  記事  >  Java  >  JTable の行の背景色を更新するにはどうすればよいですか?

JTable の行の背景色を更新するにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-22 07:23:11995ブラウズ

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。