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 avec cellule éditable et un mouselistener


Sujet :

Composants Java

  1. #1
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 464
    Points : 332
    Points
    332
    Par défaut JTable avec cellule éditable et un mouselistener
    Je ne sais pas si je vais être très clair.
    J'ai rendu mes cellules de JTable éditables donc quand je double-clique sur une cellule je peux l'éditer et cela sans avoir besoin d'ajouter un mouseListener à mon tableau.
    Je voudrai maintenant que le tableau réagisse aux autres actions de la souris.
    Quand je doubleclique je veux retrouver l'action d'édition, mais pour le clic droit je veux pouvoir traiter moi-même l'action. Je pense qu'il faut ajouter un mouseListener. Mais comment lui faire comprendre que pour le doubleclic je veux conserver l'opération d'édition ?
    C'est en respectant les autres que l'on se fait respecter.

  2. #2
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 464
    Points : 332
    Points
    332
    Par défaut
    Citation Envoyé par Patrice Henrio Voir le message
    Je ne sais pas si je vais être très clair.
    J'ai rendu mes cellules de JTable éditables donc quand je double-clique sur une cellule je peux l'éditer et cela sans avoir besoin d'ajouter un mouseListener à mon tableau.
    Je voudrai maintenant que le tableau réagisse aux autres actions de la souris.
    Quand je doubleclique je veux retrouver l'action d'édition, mais pour le clic droit je veux pouvoir traiter moi-même l'action. Je pense qu'il faut ajouter un mouseListener. Mais comment lui faire comprendre que pour le doubleclic je veux conserver l'opération d'édition ?
    Je me réponds à moi-même car en fouillant le code des JTable, j'ai trouvé la solution.
    Donc ils suffit de définit un MouseListener sur le tableau avec le code suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    addMouseListener(new MouseAdapter()
    			{
    				@Override
    				public void mouseClicked(MouseEvent evt) 
    				{
    					if (SwingUtilities.isRightMouseButton(evt)) clicDroit(evt) ;
    					else clicGauche(evt);
    				}
    			});
    avec clicDroit = votre action personnalisée
    et clic gauche défini ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    protected void clicGauche(MouseEvent evt) 
    		{
    			int lig = rowAtPoint(evt.getPoint());
    			int col = columnAtPoint(evt.getPoint());
    			editCellAt(lig, col);
    		}
    C'est en respectant les autres que l'on se fait respecter.

  3. #3
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Normalement, le fait d'ajouter un écouteur n'empêche pas les autres de recevoir les évenements. Donc pas besoin de faire ton "else". Par ailleurs, pour information, si ton but est de faire un menu popup sur le clic-droit, il y a une méthode qui permet de gérer ça directement (setComponentPopupMenu()).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  4. #4
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 464
    Points : 332
    Points
    332
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    Salut,

    Normalement, le fait d'ajouter un écouteur n'empêche pas les autres de recevoir les évenements. Donc pas besoin de faire ton "else". Par ailleurs, pour information, si ton but est de faire un menu popup sur le clic-droit, il y a une méthode qui permet de gérer ça directement (setComponentPopupMenu()).
    En effet pour le menu popup je connaissais. Il s'agit d'autre chose : si je clique droit sur une ligne remplie je la supprime, si je clique droit là où il n'y a pas de ligne j'en ajoute une.
    Par contre je vais tester sans le else.
    De plus je viens de réaliser en écrivant la ligne précédente que mon clic droit où il n'y a pas de ligne n'est pas possible dés que le tableau dépasse de la vue du JScrollPane dans lequel je l'ai mis, donc un MenuPopUp serait préférable.
    Merci.

    Donc après vérification en effet le else n'est pas nécessaire, et je vais passer par un menuPopUp pour le clic droit.

    C'est en effet beaucoup plus propre. Donc Résolu. Encore merci Joël.
    C'est en respectant les autres que l'on se fait respecter.

  5. #5
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Patrice Henrio Voir le message
    De plus je viens de réaliser en écrivant la ligne précédente que mon clic droit où il n'y a pas de ligne n'est pas possible dés que le tableau dépasse de la vue du JScrollPane dans lequel je l'ai mis, donc un MenuPopUp serait préférable.
    Tu veux peut-être au contraire parler du fait que si le nombre de lignes n'est pas suffisant pour remplir la partie visible de la table (plus exactement du viewport du scrollpane), et qu'on clique justement en dehors des lignes existantes la JTable ne reçoit pas l'évenement... Pour régler ça : table.setFillsViewportHeight(true).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  6. #6
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 464
    Points : 332
    Points
    332
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    Tu veux peut-être au contraire parler du fait que si le nombre de lignes n'est pas suffisant pour remplir la partie visible de la table (plus exactement du viewport du scrollpane), et qu'on clique justement en dehors des lignes existantes la JTable ne reçoit pas l'évenement... Pour régler ça : table.setFillsViewportHeight(true).
    Non, ça je savais et c'était fait. mais plutôt si le nombre de lignes est suffisant pour remplir le viewport du scrollPane on n'a plus de partie vide où cliquer même en utilisant le scroll.
    Une autre solution aurait pu être de cliquer sur le header mais en fait un PopupMenu convient tout à fait.
    C'est en respectant les autres que l'on se fait respecter.

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

Discussions similaires

  1. [JTABLE] Colorier cellule selon sa valeur: 2 problemes
    Par Terminator dans le forum Composants
    Réponses: 1
    Dernier message: 28/05/2007, 23h39
  2. jtable avec cellule modifiable lors du clic souris
    Par ASSOUMA2007 dans le forum Composants
    Réponses: 1
    Dernier message: 24/03/2007, 16h46
  3. Table : rendre une cellule éditable dans un tableau
    Par mollig dans le forum SWT/JFace
    Réponses: 4
    Dernier message: 15/08/2006, 00h09
  4. [JTable][editable] cellule activée/ désactivée
    Par nawel dans le forum Composants
    Réponses: 5
    Dernier message: 09/05/2005, 14h37
  5. [JTable] editer cellule
    Par cootchy dans le forum Composants
    Réponses: 5
    Dernier message: 08/09/2004, 21h15

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