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]Quel listener utiliser pour savoir ou on a cliqué?


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté Avatar de Lethal
    Profil pro
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2006
    Messages : 194
    Par défaut [JTable]Quel listener utiliser pour savoir ou on a cliqué?
    bonjour,

    J'ai une jtable et en fonction qu'on clic sur le titre d'une colonne ou sur une case (bouton gauche ou droit) je dois faire un traitement.
    Mais je ne parviens pas à cibler le listener à utiliser pour savoir à la fois qd et ou on à cliqué sur ma JTable.

    Qqun aurait une idée?

    Merci

  2. #2
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    En utilisant javax.swing.event.TableModelListener ? ( je dis peut-être une bêtise --> à tester ou à infirmer... )

  3. #3
    Membre expérimenté Avatar de Lethal
    Profil pro
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2006
    Messages : 194
    Par défaut
    merci mais je ne vois pas trop comment je pourrais savoir que l'utilisateur a cliqué avec le bouton droit de la souris avec un listerner de modèle de tableau.

  4. #4
    Membre éprouvé Avatar de White Rabbit
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 122
    Par défaut
    Mettre un MouseListener sur JTable.

  5. #5
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Tu mets un mouseListener sur la JTable ensuite tu testes si c'est le bouton droit ou gauche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public void mouseClicked(MouseEvent e ){
    if(e.getButton == MouseEvent.BUTTON1){
    //Clic gauche
    }else if(e.getButton == MouseEvent.BUTTON3){
    //Bouton Droit
    }
    }
    Ensuite pour savoir sur quelle cellule tu as cliqué il suffit de faire getSelectedRow, getSelectedColumn ou quelque chose d'approximatif

  6. #6
    Membre expérimenté Avatar de Lethal
    Profil pro
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2006
    Messages : 194
    Par défaut
    Oui, j'avais pensé à ça mais le problème c'est que je dois aussi faire un traitement quand on clique sur le nom d'une colonne. Le problème c'est que mon mouselistener recoit un evenement quand on clique sur une cellule mais pas quand on clique sur le nom d'une colonne.

    Grrr pas moyen de trouver le bon listener

  7. #7
    Membre éprouvé Avatar de White Rabbit
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 122
    Par défaut
    Juste un copier coller depuis ce lien (voir tout en bas le dernier le e967) :

    http://javaalmanac.com/egs/javax.swing.table/pkg.html

    Listening for Clicks on a Column Header in a JTable Component :

    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
        int rows = 10;
        int cols = 5;
        JTable table = new JTable(rows, cols);
        JTableHeader header = table.getTableHeader();
     
        header.addMouseListener(new ColumnHeaderListener());
     
        public class ColumnHeaderListener extends MouseAdapter {
            public void mouseClicked(MouseEvent evt) {
                JTable table = ((JTableHeader)evt.getSource()).getTable();
                TableColumnModel colModel = table.getColumnModel();
     
                // The index of the column whose header was clicked
                int vColIndex = colModel.getColumnIndexAtX(evt.getX());
                int mColIndex = table.convertColumnIndexToModel(vColIndex);
     
                // Return if not clicked on any column header
                if (vColIndex == -1) {
                    return;
                }
     
                // Determine if mouse was clicked between column heads
                Rectangle headerRect = table.getTableHeader().getHeaderRect(vColIndex);
                if (vColIndex == 0) {
                    headerRect.width -= 3;    // Hard-coded constant
                } else {
                    headerRect.grow(-3, 0);   // Hard-coded constant
                }
                if (!headerRect.contains(evt.getX(), evt.getY())) {
                    // Mouse was clicked between column heads
                    // vColIndex is the column head closest to the click
     
                    // vLeftColIndex is the column head to the left of the click
                    int vLeftColIndex = vColIndex;
                    if (evt.getX() < headerRect.x) {
                        vLeftColIndex--;
                    }
                }
            }
        }

  8. #8
    Membre expérimenté Avatar de Lethal
    Profil pro
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2006
    Messages : 194
    Par défaut
    Merci beaucoup. Je viens justement de trouver un pdf en français pas mal qui synthétise bien toutes les possibilités des JTables

    http://igm.univ-mlv.fr/~forax/ens/ig/cours/pdf/UI-09-Table.pdf

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

Discussions similaires

  1. Savoir quel objet utiliser pour mettre à jour
    Par bellemeche dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 07/09/2011, 13h59
  2. [Parser HTML] quel parser utiliser pour du HTML 4.0 ?
    Par Cyber@l dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 19/07/2004, 19h32
  3. [Debutant(e)]Quel composant utiliser pour faire une grille
    Par elitost dans le forum Composants
    Réponses: 7
    Dernier message: 21/06/2004, 20h44
  4. Réponses: 3
    Dernier message: 27/08/2003, 21h14
  5. Réponses: 2
    Dernier message: 11/07/2002, 08h31

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