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 :

[SWING] JTable editable


Sujet :

Composants Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 9
    Points : 11
    Points
    11
    Par défaut [Résolu] [SWING] JTable editable
    Bonjour,
    je cherche à remplir les colonnes de ma JTable avec des valeurs que je tape.
    Ma JTable utilise comme model une instance de ma classe MyAbstractTableModel qui étends la classe AbstractTableModel.

    Mon problème est le suivant : ma JTable apparait bien dans le JScrollPane et lorsque je clique sur la première case de ma table, je peux rentrer une valeur. Lorsque je n'implémente pas la méthode setValueAt(), le passage à la case suivante m'efface la valeur rentrée dans la case précédente. J'implémente donc cette méthode mais je rencontre un problème de conversion de type dans la méthode qui a pour prototype :
    public void setValueAt(Object obj, int rowIndex, int columnIndex) throws UnsupportedOperationException{}
    Dans cette méthode, on a une variable de type Object en paramètre qui contient la valeur tapée, mais ma table contient des doubles. J'ai essayé ceci : Double myVar = (Double)obj;
    Ceci compile mais me renvoit l'erreur: Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.String, pointant sur cette ligne...
    Comment faire pour que ma valeur tapée soit gardée dans ma JTable jusqu'à ce que l'utilisateur ait remplit toutes les colonnes de ma table? Par la suite je ferai un traitement utilisant l'ensemble des valeurs d'une ligne complète...

    Merci de vos réponses,
    Cedr

  2. #2
    Membre actif Avatar de schneidb
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 236
    Points : 240
    Points
    240
    Par défaut
    Salut,

    et si tu faisais plutot

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Double myVar = Double.parseDouble((String)obj));
    non?

  3. #3
    Futur Membre du Club
    Inscrit en
    Mars 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Je pense que le problème réside dans le fait qu'à chaque colonne du tableau est associé un Type (par défaut String),
    il est donc nécessaire de signaler à la JTable que le type de la colonne est Double (dans ton cas).
    Pour ce faire, il suffit d'implémenter la méthode:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Class getColumnClass(int columnIndex);
    dans ton modèle.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 9
    Points : 11
    Points
    11
    Par défaut
    Merci pour vos réponses
    J'ai trouvé ma solution. J'utilise ce que tu proposes schneidb afin d'avoir un double, et j'ai rajouté en complément dans ma méthode setValueAt() un évènement : fireTableCellUpdated(rowIndex,columnIndex). Ceci permet de prendre en compte le fait que la valeur de la cellule de ma JTable a été éditée ...

    Je vais également tester ta méthode Peps, car d'autres me l'ont déja indiqué...
    Merci bien

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

Discussions similaires

  1. [Swing]JTable- Dimensionner les colonnes
    Par loutfi dans le forum Composants
    Réponses: 12
    Dernier message: 01/07/2011, 08h50
  2. [Swing / JTable] Rendre les cellules d'un JTable non éditables
    Par Jérôme_20 dans le forum Composants
    Réponses: 20
    Dernier message: 10/02/2011, 10h32
  3. [SWING][JTABLE]Edition de cellule
    Par xc78370 dans le forum Composants
    Réponses: 4
    Dernier message: 09/05/2006, 11h20
  4. [Debutant][Swing][Jtable]Peut-on avoir 2 forecolor ?
    Par britou dans le forum Composants
    Réponses: 7
    Dernier message: 14/05/2004, 15h03
  5. [SWING]jTable + Focus
    Par chady dans le forum Composants
    Réponses: 5
    Dernier message: 27/02/2003, 14h51

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