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] Validation de saisie


Sujet :

Composants Java

  1. #1
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 51
    Par défaut [JTable] Validation de saisie
    Bonjour,

    Voilà mon problème : j'ai une boite de dialogue qui comporte une JTable(nombre de colonne fixé et constant 2) et un bouton.
    A la création de cette boite de dialogue, je remplis une seule colonne.

    L'utilisateur lorqu'il lance cette boite de dialogue, il voit la 1 colonne(=non éditable) remplie et il remplie à l'aide du clavier la 2 colonne.

    Lorsqu'il a fini de remplir, il clique sur le bouton et c'est là le problème , la dernière valeur saisie n'est jamais pris en compte.

    Comment je peux faire sans codé une usine à gaz pour résoudre mon problème avec une utilisation triviale de JTable ????

    tout aide ou piste est la bien venue......
    Merci d'avance

  2. #2
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 51
    Par défaut
    Pour qu'il prenne la valeur, l'utilisateur est obligé de revenir sur d'autres cases comme pour valider la saisie ou appuyer sur la touche Entrée.

    Je voudrais un fonctionnement tout simple, l'utilisateur saisie ces valeurs et lorsqu'il clique sur le bouton, on récupère toutes les valeurs de la table sans autre manipulation...

    Donc tout aide ou conseil sont les biens venus

  3. #3
    Membre expérimenté
    Inscrit en
    Septembre 2003
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 174
    Par défaut
    Salut,

    Ce serait bien de poster du code ... c'est plus facile pour t'aider parce que la on sait pas du tout comment tu t'y es pris.

    Tu as bien defini un TableModel pour ta JTable ?

  4. #4
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 51
    Par défaut
    Ouais j'ai défini un modele comme ceux-ci :
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
    class TableModele extends AbstractTableModel {
        private String[] colonne ={"Col 1","Col 2"};
        private Object[][] data; 
     
     
     
        public TableModele(int taille)
        {
        	data=new Object[taille][2];
        }
     
        public int getColumnCount() {
            return colonne.length;
        }
     
        public int getRowCount() {
            return data.length;
        }
     
        public String getColumnName(int col) {
            return colonne[col];
        }
     
        public Object getValueAt(int row, int col) {
            return data[row][col];
        }
     
        public Class getColumnClass(int c) {
            return getValueAt(0, c).getClass();
        }
     
        /*
         * Don't need to implement this method unless your table's
         * editable.
         */
        public boolean isCellEditable(int row, int col) {
            //Note that the data/cell address is constant,
            //no matter where the cell appears onscreen.
            if (col==0) {
                return false;
            } else {
                return true;
            }
        }
     
        /*
         * Don't need to implement this method unless your table's
         * data can change.
         */
        public void setValueAt(Object value, int row, int col) {
            data[row][col] = value;
            //fireTableCellUpdated(row, col);
        }
     
    }
    Ensuite je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    JTable table=new JTable(new TableModele(liste.size()));
    Voilà, maintenant je suis bloqué car je ne sais pas vraimant par quel bout le prendre pour régler mon problème ??? pourtant c'est un fonctionnement assez bateau...

  5. #5
    Membre expérimenté
    Inscrit en
    Septembre 2003
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 174
    Par défaut Re: [JTable]Validation de saisie
    Citation Envoyé par kekesilo
    Lorsqu'il a fini de remplir, il clique sur le bouton et c'est là le problème , la dernière valeur saisie n'est jamais pris en compte.
    Elle n'est pas prise en compte parce qu'elle se s'affiche pas dans la table ... ou seulement quand tu "recuperes" les valeurs. D'ailleurs comment recuperes tu les valeurs ?

    Le code est long ou pas ? tu peux peut etre poster le code complet montrant mettant en evidence ce qui ne marche pas ...

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2002
    Messages : 652
    Par défaut
    De quelle manière a tu fait ta boite de dialogue ?

    Question bête mais, le bouton de validation est focusable ?
    Si il ne l'est pas, la cellule garde le focus si tu clic dessus et celà ne déclenche pas le setValueAt de ton modèle.

  7. #7
    Membre expérimenté
    Inscrit en
    Septembre 2003
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 174
    Par défaut
    Tu peux essayer d'utiliser la methode suivante lorsque l'utilisateur click sur le bouton:
    table.editingStopped(ChangeEvent changeEvent)
    Cela forcera la fin de l'edition et l'appel avec la method setValueAt() en prenant en compte la valeur de la cellule qui est editee (si il y en a).

  8. #8
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Mars 2002
    Messages
    0
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 0
    Par défaut
    Voilà :

    j'ai une boite de dialogue JDialog qui a une JTable et un JButton. Cette boite possède une méthode getXXX() qui permet de renvoyer les valeurs d'une colonne de la JTable com
    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
     
    public java.util.Collection getColonne1()
    	{
    		LinkedList liste=new LinkedList();
     
     
     
    		for(int i=0;i<table.getModel().getRowCount();i++)
    		{
    			Object valeur=table.getModel().getValueAt(i,1);
    			liste.add(valeur);
    		}
    		table.editingStopped(new 
    		return liste;
    	}
    Ensuite le JButton a une action dérivé AbstractAction dont la méthode actionPerformed(..) appele la méthode getColonne1() de la boite de dialogue.
    j'espère que c'est clair...

    Enfin problème, lorsque je fais System.out.println par exemple dans l'actionPerformed(..) de l'action : la dernière valeur saisie n'est pas présente; a part que je fasse une tabulation sur la JTable ou que je sélectionne une autre case à la suite de la saisie.
    moi , je veux que lorsque j'ai saisi la valeur dans la case, j'appuie sur le JButton et ma saisie est prise en compte !!! : :

    toutes idées sont les biens venus...

    Syslvain_2020 : j'ai essayé ton code en le mettant dans la méthode getColonne1() : la valeur n'est pas prise en compte et en plus elle s'éfface de la JTable.


  9. #9
    Membre expérimenté
    Inscrit en
    Septembre 2003
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 174
    Par défaut
    Citation Envoyé par keke
    Syslvain_2020 : j'ai essayé ton code en le mettant dans la méthode getColonne1() : la valeur n'est pas prise en compte et en plus elle s'éfface de la JTable.
    Je ne peux pas tester le code maintenant ... mais le table.editingStopped il faut que tu le fasses avant ta boucle ... sinon c'est certain qu'il ne sert a rien !

  10. #10
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 51
    Par défaut
    Syslvain_2020 :

    Oui au départ je l'avais mis avant la boucle bien sûr mais cela faisiat le résultat que j'ai dit dans un message : la dernière valeur saisie n'est pas enregistré dans le modele et elle disparait de la cellule de la JTable.

    par désespoir j'ai essayé de le mettre un peu partout pour voir la diff. et j'ai donc fait un copié collé de ce dernier.

    toujours en recherche d'aide.... conseil, pistes....

    Est-ce que quelqu(un sait ou on peut trouver le fonctionnement de base d'une JTable avec son CellEditor, une adresse qui explique la base.... à part le tutoriel de Sun concernant les JTable !!!

    Merci

  11. #11
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 51
    Par défaut
    La solution était tout simple, il suffit d'utiliser la méthode de la JTable :
    editCellAt(ligne,colonne).

    Resultat : la dernière valeur saisie même si elle n'est pas validé en clic sur une autre ligne, tab ou Entrée, elle est qu'en même enregistré par le modèle....
    tout ça pour ça !!!

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

Discussions similaires

  1. [JSP]Valider plusieurs saisie en meme temps
    Par mamiberkof dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 10/05/2006, 08h14
  2. Réponses: 2
    Dernier message: 01/03/2006, 21h34
  3. Jtable empecher la saisie
    Par uraxyd dans le forum Composants
    Réponses: 2
    Dernier message: 01/12/2005, 14h19
  4. [JTable] Valider la JTable
    Par tomburn dans le forum Composants
    Réponses: 7
    Dernier message: 19/04/2005, 14h07
  5. [JTable] Valider une saisie
    Par dam21 dans le forum Composants
    Réponses: 3
    Dernier message: 25/03/2005, 16h29

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