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 : forcer l'édition d'une cellule et controler valeur


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur
    Inscrit en
    Décembre 2006
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 96
    Par défaut JTable : forcer l'édition d'une cellule et controler valeur
    Bonjour

    J'ai une action qui permet d'ajouter une ligne à la fin d'une JTable.
    La premiere colonne est un identifiant unique que l'utilisateur doit remplir et qui doit être non vide.

    Donc je voudrais faire deux chose : tout d'abord forcer l'édition de la cellule et lui donner le focus. Je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maTable.editCellAt(ligne, colonne)
    ça fonctionne, mais il faut cliquer dans la cellule pour pouvoir y écrire.

    1. Comment forcer l'obtention du Focus dans cette cellule ?

    Ensuite je veux controler que la cellule editée ne contient pas une chaine non-vide. Je peux le faire facilement dans la methode setValueAt() du modele, mais si l'utilisateur annule la saisie (avec Echap par exemple), la methode setValueAt() n'est pas appelée, et je ne peux pas faire mon controle.

    2. Comment capter l'evenement d'annulation de la saisie ?

    J'ai essayé en faisant une sous-classe de JTable et en reimplemantant editCellCanceled(), mais ca ne fonctionne pas.

    Merci d'avance.
    Rémi

  2. #2
    Membre confirmé
    Homme Profil pro
    Ingénieur
    Inscrit en
    Décembre 2006
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 96
    Par défaut
    reBonjour

    Pour le focus, j'ai trouvé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    maTable.editCellAt(ligne, colonne);
    maTable.getEditorComponent().requestFocusInWindow();
    Mais je voudrais pouvoir capter l'annulation de la saisie.

    Merci d'avance
    Rémi

  3. #3
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Pour gérer la saisie, tu dois faire ton propre TableCellEditor sur la colonne cible via la méthode
    JTable#setDefaultEditor
    .
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  4. #4
    Membre confirmé
    Homme Profil pro
    Ingénieur
    Inscrit en
    Décembre 2006
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 96
    Par défaut
    OK merci

    Je vais tenter ça.

  5. #5
    Membre confirmé
    Homme Profil pro
    Ingénieur
    Inscrit en
    Décembre 2006
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 96
    Par défaut
    Bonjour

    Voici ce que j'ai fait :
    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
    	private class NewTaskAction extends AbstractAction
    	{
    		TaskIDEditorListener _idEdL = new TaskIDEditorListener();
    		
    		NewTaskAction (String texte) { 
    			super(texte); 
    		}
    
    		public void actionPerformed(ActionEvent e) {
    			...
    			...
    			_taskTable.getCellEditor(row, 0).addCellEditorListener(_idEdL);
    			_taskTable.editCellAt(row, 0);
    			_taskTable.getEditorComponent().requestFocusInWindow();
    		}
    	}
    	
    	private class TaskIDEditorListener implements CellEditorListener
    	{
    		@Override
    		public void editingCanceled(ChangeEvent e) {
    			System.out.println("editor listener canceled");
    		}
    
    		@Override
    		public void editingStopped(ChangeEvent e) {
    			System.out.println("editor listener stopped");
    		}
    		
    		
    	}
    ça me parait être la bonne solution, seulement, editingCanceled n'est jamais appelé. editingStopped est appelé lorsque la saisie est validée.

    J'ai vraiment besoin de capter l'annulation de la saisie, mais là ... que faire ?


    Rémi

Discussions similaires

  1. [Swing] Forcer la sortie de l'édition d'une cellule
    Par Ayok13 dans le forum Composants
    Réponses: 3
    Dernier message: 09/12/2011, 14h41
  2. forcer l'édition d'une cellule d'un StringGrid
    Par vincent DD dans le forum Composants VCL
    Réponses: 5
    Dernier message: 15/01/2010, 11h58
  3. [JTable] Popup pour l'édition d'une cellule
    Par gids01 dans le forum Composants
    Réponses: 2
    Dernier message: 14/04/2008, 14h51
  4. JTable : édition d'une cellule de type Date
    Par SheikYerbouti dans le forum Composants
    Réponses: 5
    Dernier message: 08/12/2007, 08h50
  5. [JTable] Déplacer le focus et l'édition d'une cellule
    Par nicorama dans le forum Composants
    Réponses: 1
    Dernier message: 27/04/2007, 03h58

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