Heim  >  Artikel  >  Java  >  Wie aktualisiere ich die Hintergrundfarbe einer Zeile in einer JTable?

Wie aktualisiere ich die Hintergrundfarbe einer Zeile in einer JTable?

DDD
DDDOriginal
2024-11-22 07:23:11993Durchsuche

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

Hintergrundfarbe für eine Zeile in JTable aktualisieren

Problem:
Beim Versuch, die Hintergrundfarbe zu aktualisieren einer Zeile in einer JTable funktioniert es nur bei der ersten Iteration und schlägt fehl anschließend.

Lösung:

Das Problem tritt auf, weil die setRowColor-Methode in der ColorTable-Klasse die Hintergrundfarbe für nachfolgende Zeilen nicht zurücksetzt. Um dieses Problem zu beheben, sollte der Code wie folgt geändert werden:

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

Um zu verhindern, dass die ausgewählten Zeilen eingefärbt werden, sollte außerdem die folgende Zeile innerhalb der PrepareRenderer-Methode hinzugefügt werden:

if (rowSelection != null &amp;&amp; isRowSelected(row)) {
    continue;
}

Dadurch wird sichergestellt, dass ausgewählte Zeilen ihre Standardhintergrundfarbe beibehalten.

Beispiel Code:

// 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 ...

Das obige ist der detaillierte Inhalt vonWie aktualisiere ich die Hintergrundfarbe einer Zeile in einer JTable?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn