Heim > Java > javaLernprogramm > Hauptteil

Wie aktualisiere ich die Hintergrundfarbe einer Zeile in einer JTable?

DDD
Freigeben: 2024-11-22 07:23:11
Original
1013 Leute haben es durchsucht

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);
    }
}
Nach dem Login kopieren

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;
}
Nach dem Login kopieren

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 ...
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage