2010-05-21 6 views
3

Mes valeurs Boolean pour mon JTable affichent maintenant JCheckBoxes. Ce serait normalement bien, mais je voudrais les afficher comme une chaîne ou une image alternative. Je peux les faire afficher comme vrai/faux mais je voudrais les afficher comme une coche (✔) si vrai et rien si faux. Peut-être une image, mais permet de faire une chaîne en premier ...Set Jtable/Column Renderer pour les booléens

Répondre

8

Créer un moteur de rendu personnalisé. Étendez le DefaultTableCellRenderer et ajoutez votre propre code pour afficher ce que vous voulez. Il peut s'agir d'une icône personnalisée ou si la "coche" est un caractère imprimable que vous pouvez simplement définir le texte du rendu sur le caractère approprié. Lire l'API JTable et vous trouverez un lien vers le tutoriel Swing sur "Comment utiliser les tables" qui donnera plus d'informations sur les moteurs de rendu.

Si vous avez besoin de plus d'aide, postez votre SSCCE montrant les problèmes que vous rencontrez lors de la création du moteur de rendu.

Edit:

Le tutoriel montre comment ajouter un moteur de rendu personnalisé pour une classe donnée, mais il ne montre pas comment ajouter un moteur de rendu personnalisé pour une colonne spécifique. Vous utilisez:

table.getColumnModel().getColumn(...).setCellRenderer(...); 
+0

Comment puis-je puis l'ajouter à la colonne? http://pastebin.com/GzTQXrGU – twodayslate

+0

Voir ci-dessus. – camickr

+0

Donc, quand je crée 'BooleanRenderer (Format formateur)' ce que je mets pour formateur ... – twodayslate

3

Exemple:

table.setDefaultRenderer(Boolean.class, new BooleanRenderer(true)); 

avec BooleanRenderer

public class BooleanRenderer extends JLabel implements TableCellRenderer 
{ 
..... 
} 
+0

Veuillez lire ma suggestion pour étendre DefaultTableCellRenderer (qui a été donné 2 heures plus tôt). Il existe plusieurs raisons pour étendre le rendu par défaut. D'abord vous obtenez le comportement par défaut par défaut tel que la mise en évidence de ligne, la mise en surbrillance de bordure lorsqu'une cellule reçoit le focus. Deuxièmement, le rendu par défaut a été optimisé pour une peinture plus rapide. – camickr