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 : désactiver la sélection d'une celulle


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 118
    Par défaut JTable : désactiver la sélection d'une celulle
    Bonsoir,

    je dois créer un JTable qui possède des cases à cocher dans la première colonne et doit se comporter de la façon suivante : «
    • Un clic sur n'importe qu'elle cellule doit sélectionner toute la ligne.

    • Un clic sur la case à cocher doit sélectionner la case à cocher mais ne pas changer la ligne sélectionnée.


    Lors d'un clic dans la table, je détecte la colonne où se trouve le clic et je peux déclencher l'activation de la case à cocher.

    Si je clique sur n'importe qu'elle cellule, la sélection de la ligne se comporte normalement via le code ci-dessous : «
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    // On autorise la sélection d'une ligne entière
    table.setRowSelectionAllowed(true);
     
    // Sélection d'une colonne impossible
    table.setColumnSelectionAllowed(false);
     
    // On ne peut sélectionner qu'une ligne dans le tableau
    table.setSelectionMode(DefaultListSelectionModel.SINGLE_SELECTION);
     
    // On empêche la sélection de la cellule lors d'un clic
    table.setRequestFocusEnabled(false);
    ».

    Par contre, si je clique sur la case à cocher, il coche bien la case à cocher mais il perd la ligne sélectionnée.

    Auriez-vous une idée comment implémenter une telle solution ?

    Est-il possible de désactiver la sélection d'une colonne si on active l'option : «
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    table.setRowSelectionAllowed(true);
    » ???

    Avez-vous une idée ?

    Merci bcp,
    F.

  2. #2
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Bonjour,

    l'idée la plus simple est d'utiliser un MouseListener qui écoute les clics de la souris. Si le clic est hors d'une cellule editable (case à cocher), alors le MouseListener mémorise la ligne sélectionnée. Si le clic est sur une case à cocher, il utilise SwingUtilities.invokeLater pour resélectionner l'ancienne ligne.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 118
    Par défaut
    Solution trouvée :
    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
     
            /**
             * Tableau affichant les données 
             */
    	private final JTable table = new JTable() {
    		/**
                     * Version de sérialisation pour ce JTable personnalisé.
                     */
    		private static final long serialVersionUID = -7094448956094214770L;
     
    		public void changeSelection(int rowIndex, int columnIndex, boolean toggle, boolean extend) {
    			// ne prend pas en compte la première cellule
    			if (columnIndex != 0) {
    				super.changeSelection(rowIndex, columnIndex, toggle, extend);
     
    					// Cette action permet de donner le focus au composant tableau lors de la
    					// sélection d'une ligne...
    					// Cela permet de pouvoir modifier les lignes sélectionnées avec
    				// les touches HAUT et BAS du clavier.
    				table.requestFocus();
    			}
    	};
    Merci pour votre aide.
    F.

  4. #4
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Tiens je ne connaissais pas. Merci pour l'info
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

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

Discussions similaires

  1. [JTable] autoriser la sélection d'une seule ligne
    Par simla dans le forum Composants
    Réponses: 4
    Dernier message: 06/03/2008, 13h06
  2. [JTable] rendre la sélection d'une ligne impossible
    Par norkius dans le forum Composants
    Réponses: 6
    Dernier message: 14/12/2004, 09h50
  3. [JTable] couleur de sélection dans une JTable
    Par spoutyoyo dans le forum Composants
    Réponses: 7
    Dernier message: 06/12/2004, 11h43
  4. Sélection d'une ligne dans un JTable
    Par dam21 dans le forum Composants
    Réponses: 3
    Dernier message: 28/07/2004, 12h57
  5. Désactiver la multi-sélection d'une grille
    Par Riko dans le forum Composants VCL
    Réponses: 6
    Dernier message: 17/06/2003, 09h47

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