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

AWT/Swing Java Discussion :

Problème addMouseListener mouseClicked()


Sujet :

AWT/Swing Java

  1. #1
    Membre régulier
    Problème addMouseListener mouseClicked()
    Bonjour,

    J'ai un programme qui récupère des données dans une DB et je les affiche à l'aide de JTable.
    J'arrive à afficher une liste de clients dans un tableau, je souhaite pouvoir cliquer sur un de ces clients et afficher les films a loués.
    Cette invocation se fait via une procédure stockée qui demande l'id du client.
    Problème, dans le code qui suit, j'ai un problème avec mon setId, quand je debug, celui-ci est null (ligne 14).

    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
     
    /**
             * méthode qui va permettre de recréer un objet à partir d'un clic de
             * souris dans ma table.
             *
             * @param event
             */
            tableau.addMouseListener(new java.awt.event.MouseAdapter() {//class anonyme         
                @Override
                public void mouseClicked(java.awt.event.MouseEvent event) {
                    int row = tableau.rowAtPoint(event.getPoint());//renvoie le numéro de la ligne
                    //on récupère les info dans la ligne clickée et dans chaque colonne pour recréer un objet à partir d'un clic dans une colonne
                    Client clientSelected = new Client();
                    clientSelected.setId((int) tableau.getValueAt(row, 0));
                    //clientSelected.setId((String) tableau.getValueAt(row, 0));
                    clientSelected.setPrenom((String) tableau.getValueAt(row, 1));
                    //clientSelected.setNom((String) tableau.getValueAt(row, 1));
                    clientSelected.setNom((String) tableau.getValueAt(row, 2));
                    gest.afficheFilmsLoues(clientSelected);//appel de la méthode qui affiche le formulaire pour del et update
                }
            });


    Peut-être que quelqu'un me mettra sur la voie, à force d'avoir le nez dedans, je suis bloqué.

  2. #2
    Modérateur

    Tu devrais peut être ne pas utiliser le mouselistener, mais plutot un ListSelectionListener déjà pour commencer. (How to)
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre régulier
    Citation Envoyé par wax78 Voir le message
    Tu devrais peut être ne pas utiliser le mouselistener, mais plutot un ListSelectionListener déjà pour commencer. (How to)
    C'est une action de la souris qui doit être écoutée ici, non?
    En fait ici, quand je clic sur un cllient, je dois au moins récupérer son id, pour afficher les films loué par ce client. Et j'ai déjà un soucis à ce niveau là, l'id est null.
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
     
    clientSelected.setId((int) tableau.getValueAt(row, 0));


    J'ai déjà utilisé ce genre de code, pour ouvrir un formulaire de modification d'un article et ça fonctionnait très bien, si ce n'est que je ne récupérais pas un int mais un String.

  4. #4
    Modérateur

    Citation Envoyé par Cisman Voir le message
    C'est une action de la souris qui doit être écoutée ici, non?
    Merci mais ça j'avais compris

    Ma remarque reste valable et sera certainement plus propre que le

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    int row = tableau.rowAtPoint(event.getPoint());


    puisque le listener en question va te donner les index de la ou des lignes selectionnées. (et donc tu pourra retrouver te objets).
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre régulier
    Bon, j'ai résolu ou plutôt contourné le problème.

    en fait, je devais récupérer cet id dans une colonne de mon tableau, mais celle-ci ne devait pas être visible.

    Au départ, je n'avais pas créé cette colonne, d'où mon problème pour récupérer l'id.

    Pour finir, j'ai bien créer cette colonne, ce qui facilite grandement les choses pour y récupérer des données, mais l'astuce, c'est que je cache cette colonne id pour qu'elle n'apparaisse pas dans mon tableau.