Maison > Java > javaDidacticiel > Comment actualiser la couleur d'arrière-plan d'une ligne dans une JTable ?

Comment actualiser la couleur d'arrière-plan d'une ligne dans une JTable ?

DDD
Libérer: 2024-11-22 07:23:11
original
1061 Les gens l'ont consulté

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

Actualisation de la couleur d'arrière-plan d'une ligne dans JTable

Problème :
Lors de la tentative d'actualisation de la couleur d'arrière-plan d'une ligne dans une JTable, cela ne fonctionne qu'à la première itération et échoue par la suite.

Solution :

Le problème se pose car la méthode setRowColor de la classe ColorTable ne réinitialise pas la couleur d'arrière-plan des lignes suivantes. Pour résoudre ce problème, le code doit être modifié comme suit :

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

De plus, pour éviter que les lignes sélectionnées ne soient colorées, la ligne suivante doit être ajoutée au sein de la méthode prepareRenderer :

if (rowSelection != null &amp;&amp; isRowSelected(row)) {
    continue;
}
Copier après la connexion

Cela garantit que les lignes sélectionnées conservent leur couleur d'arrière-plan par défaut.

Exemple 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 ...
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal