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, modif répercutée seulement à l'écran


Sujet :

Composants Java

  1. #1
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut JTable, modif répercutée seulement à l'écran
    Bonjour,

    Il m'arrive un truc bizarre avec ma JTable:

    je la renseigne à l'origine avec ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    model.setDataVector(data, colnames);
    je modifie le contenu d'une colonne sans problème, mais lorsque que j'interroge la valeur, il me rend toujours celle d'origine (model.getValueAt())
    du coup, la modif n'est effective qu'à l'écran

    Qu'aurais-je bien oublié?

  2. #2
    Membre averti Avatar de Amine_sas
    Profil pro
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    245
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 245
    Points : 307
    Points
    307
    Par défaut
    Salut,
    Citation Envoyé par SheikYerbouti Voir le message
    Bonjour,

    Il m'arrive un truc bizarre avec ma JTable:

    je la renseigne à l'origine avec ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    model.setDataVector(data, colnames);
    je modifie le contenu d'une colonne sans problème, mais lorsque que j'interroge la valeur, il me rend toujours celle d'origine (model.getValueAt())
    du coup, la modif n'est effective qu'à l'écran

    Qu'aurais-je bien oublié?
    As tu modifié le Vector ou ArrayList (ou autre structure) qui contient les données ?

  3. #3
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Non... cela n'est-il pas automatique?

  4. #4
    Membre averti

    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 418
    Points : 328
    Points
    328
    Par défaut
    Citation Envoyé par SheikYerbouti Voir le message
    Non... cela n'est-il pas automatique?
    Ha ben non... C'est à toi de gérer ce qui se passe à l'édition des cellules de la JTable.
    Si je me souviens bien, ça passe notamment par la redéfinition de la méthode setValueAt() je crois, dans laquelle il faut que tu répercutes la saisie de l'utilisateur dans ton vecteur Data.

    [EDIT]
    En fait, je suis toujours passé par la définition d'un TableModel perso, comme indiqué d'après le tuto de sun.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    new AbstractTableModel() {
        public String getColumnName(int col) {
            return columnNames[col].toString();
        }
        public int getRowCount() { return rowData.length; }
        public int getColumnCount() { return columnNames.length; }
        public Object getValueAt(int row, int col) {
            return rowData[row][col];
        }
        public boolean isCellEditable(int row, int col)
            { return true; }
        public void setValueAt(Object value, int row, int col) {
            rowData[row][col] = value;
            fireTableCellUpdated(row, col);
        }
    }
    [/EDIT]

  5. #5
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Ok, merci, je m'empresse de consulter les infos

  6. #6
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    J'ai ajouté une classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    class MyTableModel extends AbstractTableModel { ... }
    dans laquelle je redéfini setDataVector().
    Maintenant, je n'ai plus aucun donnée qui apparait dans la JTable, si ce n'est la première colonne de la première ligne

  7. #7
    Membre averti

    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 418
    Points : 328
    Points
    328
    Par défaut
    Re,

    en fait, il me semble qu'une fois redéfinies les méthodes du TableModel, il suffit de faire appelle au constructeur JTable(monTableModel). Si les méthodes ont correctement été redéfinies, l'affichage et les changements dans la JTable sont bien pris en compte.

  8. #8
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Ok, cela fonctionne maintenant.
    Merci

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

Discussions similaires

  1. JTable, modification des colonnes visibles.
    Par booboule dans le forum Composants
    Réponses: 2
    Dernier message: 08/12/2008, 11h51
  2. [JTable] Modification d'une checkbox
    Par aileen dans le forum Composants
    Réponses: 17
    Dernier message: 18/04/2008, 12h23
  3. Modification de la Résolution écran
    Par yoann7638 dans le forum VBScript
    Réponses: 2
    Dernier message: 05/03/2007, 10h04
  4. Réponses: 1
    Dernier message: 02/03/2007, 09h48
  5. [JTable] Comment rendre seulement toute une
    Par danje dans le forum Composants
    Réponses: 3
    Dernier message: 13/12/2004, 18h18

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