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

 Java Discussion :

Validation/fin édition cellule JTable


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 27
    Par défaut Validation/fin édition cellule JTable
    Bonsoir à tous,
    J'ai un petit problème que je vais essayer d'expliquer. Premièrement, supposons que je remplisse une cellule d'une JTable avec des données. Deuxièmement, supposons que j'appuie sur un bouton ok pour enregistrer ces données ailleurs mais sans avoir déplacé le curseur de la cellule, la cellule étant encore en mode édit. Au final, quand je consulte la donnée enregistrée de la cellule, celle-ci n'a pas été validée.
    Ma question est: Comment je peux faire pour finir l'édition de la cellule?
    J'ai pensé déplacer à gauche ou à droite mon curseur pour finir l'édition en provoquant un événement mais je ne sais pas trop comment faire...
    Quelqu'un a-t-il une idée?
    Merci

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 121
    Par défaut
    Pour te mettre dans le bain tu peux lire le tutoriel de Sun
    http://java.sun.com/docs/books/tutor...nts/table.html

    C'est un peu compliqué

    Chaque cellule est editée et rendue par deux composantes différentes.
    Par défaut DefaultCellEditor et DefaultTableCellRenderer
    Ces composantes sont crées en fonction du type de donnée à éditer ou à visualiser (check box pour un booléen, JTextfield pour un String,...).
    Lorsque une cellule éditable reçoi le focus, la JTable montre un éditeur correspondant à cette cellule.
    Lorsque l'éditeur a fini sont travail il le notifie à la JTable (via une méthode protégée fireEditingStopped)

    Les méthodes publiques de l'éditeur qui notifient qu'il a fini sont travail sont...

    stopCellEditing (qui appelle fireEditingStopped pour dire à la table de se mettre à jour)
    cancelCellEditing (pour dire à la table d'ignorer cette modification)

    Tu peux éventuellement ajouter une action à ton bouton "OK":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    // Une Action ajoutée au bouton	
    public void actionPerformed(ActionEvent e) {
    		CellEditor c = table.getCellEditor();
    		boolean stop=false;
    		if (c!=null) stop=c.stopCellEditing();
     
    		System.out.println("...stop cell editing "+stop);
    }

  3. #3
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 27
    Par défaut
    Merci pour cette excellente réponse!! Je me demandais vraiment comment j'allais y arriver. Tout marche nickel maintenant!!

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

Discussions similaires

  1. Erreur édition cellule JTable (copie ligne)
    Par lr.remy dans le forum Composants
    Réponses: 3
    Dernier message: 21/06/2013, 13h19
  2. Problème édition cellule d'un JTable
    Par Poum19 dans le forum Composants
    Réponses: 2
    Dernier message: 16/04/2012, 16h23
  3. Réponses: 12
    Dernier message: 05/03/2007, 11h52
  4. executer une macro apres validation d'une cellule
    Par lio62 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/01/2007, 19h20
  5. rafraichissement cellule JTable
    Par jdewalqu dans le forum Composants
    Réponses: 7
    Dernier message: 04/07/2006, 11h10

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