Changement de JTable couleur de la cellule
Cette conduite est moi absolument fou.
Je sais que, pour modifier la mise en forme des cellules de tableau avec JTable, je utiliser mon propre moteur de rendu. Mais je n'arrive pas à le mettre en œuvre correctement.
C'est ma configuration actuelle:
public class MyClass
{
public static void main(String args[])
{
JTable myTable = new JTable(10, 10);
myTable.setDefaultRenderer ([I dont know what to put here], new CustomRenderer());
}
}
class CustomRenderer extends DefaultTableCellRenderer
{
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
{
Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
//Formatting
return c;
}
}
Que dois-je utiliser pour le premier paramètre de setDefaultRenderer
? L'API juste dit de "classe". Je n'ai aucune idée de quoi mettre là.
Quelqu'un pourrait-il seulement d'expliquer, en termes simples, comment je mettre en place? Veuillez fournir un exemple de comment je peux modifier la mise en forme de l'intérieur de la main()
méthode.
OriginalL'auteur Josh Leitzel | 2009-05-03
Vous devez vous connecter pour publier un commentaire.
Dans le premier paramètre de
setDefaultRenderer
, mettre le classe littérale pour la Classe à laquelle vous souhaitez remplacer le rendu. I. e., si vos données se composent de toutes les chaînes, vous pouvez mettreSi vos données se compose également de valeurs avec
BigDecimal
ouInteger
comme les classes, vous devez appeler cette méthode plusieurs fois pour chaque type de classe (BigDecimal.class
ouInteger.class
dans chaque cas).Et enfin, pour changer la couleur d'arrière-plan dans votre moteur de rendu:
Si vous écrivez un convertisseur qui devrait fonctionner pour toutes les classes d'une interface, vous devrez également modifier le
getColumnClass
fonction de votre modèle de table et laisser revenir à l'interface de la classe de tous les objets qui implémentent cette interface:Avec qui on peut enregistrer un moteur de rendu pour IColorable.class et n'a pas besoin de s'inscrire à un convertisseur séparé pour chaque mise en œuvre.
J'ai eu de travail en utilisant Object.class au lieu de String.class. Je ne sais pas pourquoi c'était nécessaire, même si, parce que toutes mes données étaient les chaînes de caractères. Merci pour votre aide!
Ne suis-je pas autorisé à modifier le moteur de rendu à l'intérieur d'un auditeur? Je veux le re-formater la table quand un bouton est pressé.
Vous avez besoin d'utiliser Object.class parce que vous avez créé un JTable w/o passant dans un TableModel. La table par défaut modèle créé retourne Object.class pour chacune des colonnes de type. Voir: TableModel::getColumnClass(int col)
Où dois-je l'utiliser? Dire que j'ai maintenant envie de changer une cellule de tableau est de couleur lorsque je clique sur elle?
OriginalL'auteur Camilo Díaz Repka