IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants Java Discussion :

[JTable] Mettre des lignes en gras


Sujet :

Composants Java

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 66
    Points : 45
    Points
    45
    Par défaut [JTable] Mettre des lignes en gras
    Bonjour à tous,

    Je recherche à mettre certaines lignes d'une JTable en gras selon une donnée présente dans cette même JTable...

    Comment je peux faire svp ?

    J'avais commencé par ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class MyRenderer extends DefaultTableCellRenderer {
    	private static final long serialVersionUID = 1147415359404633003L;
     
    	public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, 
    						boolean hasFocus, int row, int column)  {
    		super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
     
    		if (row == 0) {
    			this.setFont(new Font("Verdana", Font.BOLD, 12));
    		}
    		return this;
    	}
    }
    Sans faire attention à la condition if (c'était pour tester)

    Le soucis, c'est que quand il passe dans cette méthode, il récupère l'entier correspondant à la ligne, à la colonne et la valeur se trouvant dans la ligne,colonne.

    Moi ce que je recherche à faire, c'est mettre en gras UNIQUEMENT si la valeur de la première colonne est à 0

    Comment est-ce que je peux faire ça svp ?

    Merci d'avance

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 179
    Points : 216
    Points
    216
    Par défaut
    Citation Envoyé par Takis Voir le message
    Moi ce que je recherche à faire, c'est mettre en gras UNIQUEMENT si la valeur de la première colonne est à 0
    La valeur est passée en paramètre, il te suffit de l'exploiter.
    Remplace ton test par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ((Number) value).intValue() == 0)
    En supposant que tu stockes bien des nombres, que tu n'ais pas de null et que tu veuilles comparer des entiers.

    Tu peux évidemment aussi tester le col == 0, mais j'utiliserai plutôt ce renderer que pour la première colonne et un autre pour les suivantes.

    Fred

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 66
    Points : 45
    Points
    45
    Par défaut
    Ouep mais si je fais ça ainsi, j'ai que la première colonne en gras :/
    Ce qu'il me faudrait, c'est toute la ligne...

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 179
    Points : 216
    Points
    216
    Par défaut
    Citation Envoyé par Takis Voir le message
    Ce qu'il me faudrait, c'est toute la ligne...
    Citation Envoyé par Takis Voir le message
    si la valeur de la première colonne est à 0
    Te décider tu dois...

    Si c'est la ligne alors tu dois effectivement associer ton renderer à toutes les colonnes et tester le paramètre row. Fais attention quand même à la notion de première ligne, est-ce celle dans la table (vue) ou celle du modèle, l'indice n'est pas forcement le même, mais il y a des fonctions de conversion pour passer de l'un à l'autre.

    Fred.

  5. #5
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 66
    Points : 45
    Points
    45
    Par défaut
    Il n'y a aucune confusion. Je me répète : J'aimerais que toute la ligne soit en gras si et seulement si la valeur de la première colonne est 0.

    Et pour réaliser cela, je ne sais pas trop comment m'y prendre.

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 179
    Points : 216
    Points
    216
    Par défaut
    Citation Envoyé par Takis Voir le message
    Il n'y a aucune confusion.
    Pardon, au temps pour moi.

    Donc, renderer identique pour toutes les colonnes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, 
    						boolean hasFocus, int row, int column)
    {
      super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
      Number valueFirstCol = (Number) table.getValueAt(row, 0);
      if (valueFirstCol.intValue() == 0)
        this.setFont(this.getFont().deriveFont(Font.BOLD));
      return this;
    }
    Code non testé, mais qui devrait faire la colle.

    Fred

  7. #7
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 66
    Points : 45
    Points
    45
    Par défaut
    Merci, ça fonctionne parfaitement !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. JTable : Mettre une ligne en GRAS et Simplement
    Par wilfryjules dans le forum Composants
    Réponses: 3
    Dernier message: 28/07/2011, 00h08
  2. Réponses: 8
    Dernier message: 20/05/2010, 20h18
  3. [JTable] coloration des lignes d'une JTable
    Par MathiasM dans le forum Composants
    Réponses: 3
    Dernier message: 22/06/2009, 10h19
  4. Comment mettre des lignes de couleur dans une TCheckListBox ?
    Par Isa31 dans le forum Composants VCL
    Réponses: 9
    Dernier message: 31/03/2005, 08h40
  5. Réponses: 4
    Dernier message: 24/04/2003, 22h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo