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 :

Problème de refresh dans une JTable


Sujet :

Composants Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 56
    Points : 50
    Points
    50
    Par défaut Problème de refresh dans une JTable
    Bonjour à tous,

    Bon donc voilà c'est assez simple en principe mais je ne parviens pas à mettre une icône à jour dans la cellule d'une JTable.

    A l'initialisation de ma JTable, pas de problème je vois bien une icône correspondant à l'état par défaut de mon application (un ? comme montré ci-dessous). Mais lorsque je clique sur un bouton qui exécute un procédure et en fonction du résultat, je voudrais affecter la cellule en fonction de ce mm résultat (un V si OK et une X si KO...).

    Voici comment je m'y prend :

    Appel de la méthode du TableModel :

    ((VerifFileTableModel)fileTableVerif.getModel()).setCheckedState(false,0);

    Implémentation de la méthode setCheckedState :

    public void setCheckedState(boolean validCheck, int row) {
    String test = ResourceManager.getString(NAME_COL+2);
    int index = columnNames.indexOf(test);
    int func = ((Integer)funcToExecute.get(index)).intValue();
    System.out.println(getValueAt(0,1).getClass());
    if(index != -1){
    System.out.println("class : "+getValueAt(0,1).getClass());
    if(validCheck){
    imgIc = new ImageIcon("images/valide.gif");
    this.setValueAt(imgIc, row, index);
    }
    else{
    this.setValueAt(new ImageIcon("images/notvalide.gif"), row, index);
    }
    }
    this.fireTableCellUpdated(row, index);
    this.fireTableDataChanged();
    }

    Et malgré les appels respectifs aux méthodes
    this.fireTableCellUpdated(row, index);
    this.fireTableDataChanged();

    Cela ne fonctionne pas...

    Fenêtre dans l'état par défaut :



    Je voudrais donc parvenir à changer l'icône de la colonne 'Etat'...

    Merci pour votre aide

  2. #2
    Membre du Club Avatar de bubu56
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 58
    Points : 65
    Points
    65
    Par défaut
    le plus simple est de faire un renderer qui affiche l'une ou l'autre image en fonction du booléen... et de faire this.setValueAt(validCheck, row, index); lors du changement de la valeur

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 56
    Points : 50
    Points
    50
    Par défaut
    Bon en fait qque chose m'échapait encore avec les TableModel !
    Le problème est dû au fait que lorsque l'on fait un setValueAt, cela modifie la vue du contenu de la cellule et non pas la valeur réelle de la ligne.

    ==> qd je faisais le fireTableDataChanged la vue de la cellule sera celle qui est indiqué dans getValueAt, c'est à dire return imgIc !!

    Il va donc falloir que je mette en place un mécanisme pour conserver une icône pour chaque ligne...

    Bon suis débutant ds le dvpt ! Ne dit-on pas c en forgeant,...

    Merci bubu56, je vais sans doute faire un renderer à voir par la suite...

  4. #4
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Attaque toi au renderer des maintenant car c'est réellement ce dont tu as besoin si tu veux faire quelquechose de propre et a peu près pérenne
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 05/11/2008, 21h17
  2. Problème de refresh dans une application modulaire
    Par TigrouMeow dans le forum Windows Forms
    Réponses: 8
    Dernier message: 11/10/2007, 15h06
  3. problème de lignes supprimées dans une JTable
    Par AnjouWeb dans le forum Composants
    Réponses: 2
    Dernier message: 22/06/2007, 12h59
  4. problème de couleur de cellule dans une JTable
    Par rprom1 dans le forum Composants
    Réponses: 3
    Dernier message: 04/04/2007, 00h01
  5. [Jtable] problème de suppression dans une Jtable
    Par gianni17 dans le forum Composants
    Réponses: 1
    Dernier message: 02/12/2005, 18h36

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