Boolean renderer pour jtable

Contenu du snippet

Class Java permettant d'afficher une couleur dans
une cellule d'une JTable en fonction d'un objet Boolean s'y trouvant.
Gris = Vrai ; Blanc = Faux ; bleu = cellule sélectionnée

Source / Exemple :


import javax.swing.table.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class BooleanRenderer extends DefaultTableCellRenderer 
{
	public Component getTableCellRendererComponent (JTable table,			Object value, boolean isSelected,				boolean hasFocus, int row,
			int column) 
	{
	
	// Appel de la méthode de la classe mère  
	
	Component comp = super.getTableCellRendererComponent(
                                         table, value, isSelected, hasFocus, row, column);
		
	// Récupération du Jlabel qui est renvoyé
	
		JLabel label = (JLabel)comp;
	
	// Mise en place d'un text vide 
		label.setHorizontalTextPosition(JLabel.CENTER);
		label.setText("");
	

     // Sélection de la couleur à afficher en fonction de l'Object value qui est un 
     // objet Boolean => ici Object value
     // que l'on aura placé lors de la création de la JTable 
     // CF. DefaultTableModel dtm = new DefaultTableModel
     //                                                                    (cells,columnNames);
        
		if(((Boolean)value).booleanValue())				label.setBackground( Color.gray );
		else
			label.setBackground( Color.white );
		
                                if(isSelected)
		                 label.setBackground(Color.blue);
		
// Renvoie du Component (ici un JLabel) qui sera affiché dans la cellule
		return label;
	}
}

Conclusion :


Si vous voulez d'autres trucs sur les swing du genre un JTree qui charge ses noeuds dynamiquement faite-le moi savoir :))

Au fait on n'est pas obliger de faire ça avec un Boolean, ça peut être in Integer ou une String il suffira de faire le bon cast et d'affecter une couleur spécifique en fonction.
Notez également qu'on n'est pas obligé de renvoyer un JLabel, un Component
de votre fabrication peut également faire l'affaire

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.