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 :

Evenement double clique sur jTable


Sujet :

Composants Java

  1. #1
    Nouveau membre du Club
    Profil pro
    developeur
    Inscrit en
    Août 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : developeur

    Informations forums :
    Inscription : Août 2004
    Messages : 57
    Points : 34
    Points
    34
    Par défaut Evenement double clique sur jTable
    Bonjour a tous, tout d'abord merci a toute la communauté pour votre soutient precieux

    Je vous expose mon problème :

    j'ai donc 2 classes : une classe fenetre_fp et une classe SimpleTableDemo.

    Dans la classe fenetre_fp je créer donc l'objet, qui sera affiché par apres :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SimpleTableDemo tab = new SimpleTableDemo("3/Id/Prenom/Nom/select * from clients order by id");
    Le tableau aura donc 3 colonne, id, prenom, nom et la classe remplie le tableau en fonction de la requete.

    Maintenant j'aimerai ajouter un listener a ce tableau, pour que lorsque je double clique sur une ligne (donc depuis la classe fenetre_fp) je recupere la ligne selectionnée et ouvre une nouvelle page avec les informations supplémentaires sur le client..
    Hélas cela fait plus d'une semaine que je reste bloqué sur ce probleme, j'arrive bien a recupérer la ligne selectionnée depuis la classe SimpleTableDemo, mais pas depuis la classe fenetre_fp.

    Merci d'avance a tous

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

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Ton simpleTabDemo étend JTable non ?

    Alors qu'est ce qui t'empeche de faire dans la classe fenetre_fp :

    tab.addMouseListener(...);

    ?

  3. #3
    Nouveau membre du Club
    Profil pro
    developeur
    Inscrit en
    Août 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : developeur

    Informations forums :
    Inscription : Août 2004
    Messages : 57
    Points : 34
    Points
    34
    Par défaut
    euh mon SimpleTableDemo étends JPanel

  4. #4
    Membre chevronné
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Points : 2 011
    Points
    2 011
    Par défaut
    C'est quel composant qui affiche le résultat de la requête?

    Tu ne dessine pas un tableau dans ton SimpleTableDemo quand même?

  5. #5
    Nouveau membre du Club
    Profil pro
    developeur
    Inscrit en
    Août 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : developeur

    Informations forums :
    Inscription : Août 2004
    Messages : 57
    Points : 34
    Points
    34
    Par défaut
    c'est un jTable qui affiche le résultat de la requete.

    euh le tableau est dessiné dans SimpleTableDemo.

    DAns mon simpletabledemo :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    final JTable table = new JTable(model);
    je créer un JTable avec les données.

    Dois je procéder autrement?

  6. #6
    Membre chevronné
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Points : 2 011
    Points
    2 011
    Par défaut
    Non du tout, une JTable, c'est très bien.

    Donc pour gérer le double clic sur ta JTable un truc de ce style devrait faire l'affaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    table.addMouseListener(new MouseAdapter(
    public void mouseClicked(MouseEvent e){
          if (e.getClickCount()>1){
                //action que tu veux faire en cas de double clic
          }
    }
    ));
    Ca te rajoute un écouteur de la souris sur la JTable.
    La méthode getClickCount renvoie le nombre de fois que tu as cliqué ce qui permet de traité les double clics.
    Tu a juste à rajouter le traitement que tu veux faire.

  7. #7
    Membre chevronné
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Points : 2 011
    Points
    2 011
    Par défaut
    Bon en relisant ta question du départ, j'ai compris que tu voulais récupérer la ligne selectionnée dans ta classe fenetre_fp (pas top ce nom d'ailleurs, ça ne respecte pas les conventions java, en fin bref).

    Donc pour ce faire tu peux ajouter une méthode addMouseListener dans ta classe SimpleTableDemo de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public class SampleTableDemo {
    ...
     
         public void addMouseListener(MouseListener l){
            table.addMouseListener(l);
         }
    ...
    }
    Et une méthode getSelectedRow toujours dans SampleTableDemo :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    public class SampleTableDemo {
    ...
     
    public int getSelectedRow(){
            return table.getSelectedRow();
    }
    ...
    }

    Ce qui te permettra de faire dans classe fenetre_fp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SimpleTableDemo tab = new SimpleTableDemo("3/Id/Prenom/Nom/select * from clients order by id");
    tab.addMouseListener(new MouseAdapter( 
    public void mouseClicked(MouseEvent e){ 
          if (e.getClickCount()>1){ 
                int ligneSelectionnée = tab.getSelectedRow();
                //action que tu veux faire en cas de double clic 
          } 
    } 
    ));
    Bon là, tu as juste l'index de la ligne sélectionné mais bon je pense que tu as compris le principe si tu veux accéder à autre chose.

  8. #8
    Nouveau membre du Club
    Profil pro
    developeur
    Inscrit en
    Août 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : developeur

    Informations forums :
    Inscription : Août 2004
    Messages : 57
    Points : 34
    Points
    34
    Par défaut
    euh j'ai un petit probleme, lorsque je rajoute les 2 méthodes dans la classe SimpleTableDemo :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class SampleTableDemo {
    ...
     
         public void addMouseListener(MouseListener l){
            table.addMouseListener(l);
         }
    ...
    public int getSelectedRow(){
            return table.getSelectedRow();
    }
    ...
    }
    Il me fait une erreur sur table :
    "SimpleTableDemo.java" : impossible de trouver le symbole ; symbole : variable table, emplacement : classe pressing_alpha.SimpleTableDemo en ligne 238, colonne 15

  9. #9
    Membre chevronné
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Points : 2 011
    Points
    2 011
    Par défaut
    Il faut que tu déclare ta JTable table en variable d'instance et que tu l'initialise dans le constructeur de ta classe SampleTableDemo.

  10. #10
    Nouveau membre du Club
    Profil pro
    developeur
    Inscrit en
    Août 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : developeur

    Informations forums :
    Inscription : Août 2004
    Messages : 57
    Points : 34
    Points
    34
    Par défaut
    oki pour l'erreur table ca marche maintenant merci .

    Néamoins, dsl pour le derangement :s, euh j'ai une erreur dans fenetre_fp, lorsque je rajoute le listener.
    Ma classe fenetre_fp implemente mouselistener, dans ce cas je n'en ai plus besoin si?
    il me fait une erreur sur le public void, : début d'expression incorrecte.
    et a la fin de la syntaxe il me met ')' attendu.

    dsl je debute en java :s

  11. #11
    Membre chevronné
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Points : 2 011
    Points
    2 011
    Par défaut
    Citation Envoyé par oOoOuuhmAn
    oki pour l'erreur table ca marche maintenant merci .

    Néamoins, dsl pour le derangement :s, euh j'ai une erreur dans fenetre_fp, lorsque je rajoute le listener.
    Ma classe fenetre_fp implemente mouselistener, dans ce cas je n'en ai plus besoin si?
    Non...

    Citation Envoyé par oOoOuuhmAn
    il me fait une erreur sur le public void, : début d'expression incorrecte.
    et a la fin de la syntaxe il me met ')' attendu.
    Peut tu mettre le message complet ainsi que la ligne de ton code concerné par ce message d'erreur de compilation?

    Citation Envoyé par oOoOuuhmAn
    dsl je debute en java :s
    Pourquoi y a t'il le tag [confimé] dans le titre?

    Cela dit c'est pas grave d'être débutant, je le suis aussi par certains côtés.

  12. #12
    Membre chevronné
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Points : 2 011
    Points
    2 011
    Par défaut
    J'ai trouvé d'où viens ton problème c'est de ma faute, je me suis trompé dans la syntaxe.

    C'est pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SimpleTableDemo tab = new SimpleTableDemo("3/Id/Prenom/Nom/select * from clients order by id"); 
    tab.addMouseListener(new MouseAdapter( 
    public void mouseClicked(MouseEvent e){ 
          if (e.getClickCount()>1){ 
                int ligneSelectionnée = tab.getSelectedRow(); 
                //action que tu veux faire en cas de double clic 
          } 
    } 
    ));
    C'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SimpleTableDemo tab = new SimpleTableDemo("3/Id/Prenom/Nom/select * from clients order by id"); 
    tab.addMouseListener(new MouseAdapter() {
        public void mouseClicked(MouseEvent arg0) {
          if (e.getClickCount()>1){ 
                int ligneSelectionnée = tab.getSelectedRow(); 
                //action que tu veux faire en cas de double clic 
          }				
        }
    });
    la ligne tab.addMouseListener... permet de créer un mouse listener à la volée. Cela permet de ne pas être obligé d'implémenter MouseListener dans ta classe fenetre_fp

  13. #13
    Nouveau membre du Club
    Profil pro
    developeur
    Inscrit en
    Août 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : developeur

    Informations forums :
    Inscription : Août 2004
    Messages : 57
    Points : 34
    Points
    34
    Par défaut
    oki je commence a comprendre comment ca marche .

    Par contre j'ai du rajouter final devant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     SimpleTableDemo tab = new SimpleTableDemo("3/Id/Prenom/Nom/select * from clients order by id");
    Maintenant il me fait un :

    java.lang.NullPointerException
    at pressing_alpha.SimpleTableDemo.addMouseListener(SimpleTableDemo.java:223)
    at pressing_alpha.Fenetre_Fp.jbInit(Fenetre_Fp.java:112)
    at pressing_alpha.Fenetre_Fp.<init>(Fenetre_Fp.java:94)
    at pressing_alpha.Main3.<init>(Main3.java:47)
    at pressing_alpha.Main3.main(Main3.java:86)
    A la ligne 223 dans SimpleTableDemo j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
          public void addMouseListener(MouseListener e){
                  table.addMouseListener(e);
         }
    Et dans fenetre_fp a la ligne 112 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      tab.addMouseListener(new MouseAdapter() {
    aie aie aie ^^

  14. #14
    Membre chevronné
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Points : 2 011
    Points
    2 011
    Par défaut
    Où initialises-tu ta JTable dans ta classe SampleTableDemo?

    Pour le final, je l'avais oublié mais il est nécessaire car tu accède à ton SampleTableDemo tab dans la classe interne anonyme que tu as créée avec le tab.addMouseListener(...).

  15. #15
    Nouveau membre du Club
    Profil pro
    developeur
    Inscrit en
    Août 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : developeur

    Informations forums :
    Inscription : Août 2004
    Messages : 57
    Points : 34
    Points
    34
    Par défaut
    oui Jtable est initialisé dans SimpleTableDemo :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    final JTable table = new JTable(model);
    je n'ai pas le choix ou bien? car comment remplir le tableau autrement?

  16. #16
    Membre chevronné
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Points : 2 011
    Points
    2 011
    Par défaut
    Peux tu me mettre le code de SimpleTableDemo s'il n'est pas trop long s'il te plaît?

  17. #17
    Nouveau membre du Club
    Profil pro
    developeur
    Inscrit en
    Août 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : developeur

    Informations forums :
    Inscription : Août 2004
    Messages : 57
    Points : 34
    Points
    34
    Par défaut
    voici le code de Simpletabledemo :

    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    public class SimpleTableDemo
        extends JPanel {
     
      private boolean DEBUG = false;
      public JTable table;
      public SimpleTableDemo() {}
     
      public SimpleTableDemo(String chaine) throws SQLException {
        super(new GridLayout(1, 0));
        // Compte le nombre d'arguments
        int i = chaine.indexOf("/");
        int j = 0;
        while (i != -1) {
          j++;
          i = chaine.indexOf("/", i + 1);
        }
        j++;
        System.out.println("Il y a : " + j + " arguments");
     
        int x = j;
        String[] colonne = new String[x];
        StringTokenizer tokenizer = new StringTokenizer(chaine, "/");
        i = 0;
        for (i = 0; i < j; i++) {
          String lex = tokenizer.nextToken();
          System.out.println("affichage de lex "+i+": "+lex);
          colonne[i]=lex;
        }
        String colonneR[] = new String[j-2];
        i=0;
        for (i=0;i<j-2;i++){
          colonneR[i]=colonne[i+1];
          System.out.println("colonneR : "+colonneR[i]+" Colonne :"+colonne[i]);
        }
     
        Requete_SQL requete = new Requete_SQL();
        int id = requete.getId();
     
        DefaultTableModel model = new DefaultTableModel(colonneR, 0);
        Statement stmt = mysql.connexion.createStatement();
        String query = colonne[j-1];
        ResultSet rset = stmt.executeQuery(query);
     
        while (rset.next()) {
          model.addRow(new Object[] {rset.getString(colonne[1]), rset.getString(colonne[2]),
                       rset.getString(colonne[3])});
     
        }
        stmt.close();
     
        final JTable table = new JTable(model);
     
        table.setCellSelectionEnabled(false) ;
        table.setColumnSelectionAllowed(false);
        table.setColumnSelectionAllowed(false);
        table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
     
      Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
     
    /*  table.getTableHeader().addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent event) {
              if (event.getClickCount() < 2) return;
              //int tableColumn = table.columnAtPoint(event.getPoint());
              //int modelColumn = table.convertColumnIndexToModel(tableColumn);
              //System.out.println("Affichage du double clique :"+clique);
            }
          });
    */
        table.setPreferredScrollableViewportSize(new Dimension(500, 70));
     
        if (DEBUG) {
          table.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
              //printDebugData(table);
            }
          });
        }
     
        //Create the scroll pane and add the table to it.
        JScrollPane scrollPane = new JScrollPane(table);
     
        //Add the scroll pane to this panel.
        add(scrollPane);
      }
     
          public void addMouseListener(MouseListener l){
                  table.addMouseListener(l);
         } 
         public int getSelectedRow(){
                 return table.getSelectedRow();
    } 
     
    }
    Y'a une grande partie sur le découpage de la chaine que je lui rentre
    J'avais pris l'exemple sur le site de sun

  18. #18
    Membre chevronné
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Points : 2 011
    Points
    2 011
    Par défaut
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    public class SimpleTableDemo
        extends JPanel {
     
      private boolean DEBUG = false;
      public JTable table;
      public SimpleTableDemo() {}
     
      public SimpleTableDemo(String chaine) throws SQLException {
        super(new GridLayout(1, 0));
        // Compte le nombre d'arguments
        int i = chaine.indexOf("/");
        int j = 0;
        while (i != -1) {
          j++;
          i = chaine.indexOf("/", i + 1);
        }
        j++;
        System.out.println("Il y a : " + j + " arguments");
     
        int x = j;
        String[] colonne = new String[x];
        StringTokenizer tokenizer = new StringTokenizer(chaine, "/");
        i = 0;
        for (i = 0; i < j; i++) {
          String lex = tokenizer.nextToken();
          System.out.println("affichage de lex "+i+": "+lex);
          colonne[i]=lex;
        }
        String colonneR[] = new String[j-2];
        i=0;
        for (i=0;i<j-2;i++){
          colonneR[i]=colonne[i+1];
          System.out.println("colonneR : "+colonneR[i]+" Colonne :"+colonne[i]);
        }
     
        Requete_SQL requete = new Requete_SQL();
        int id = requete.getId();
     
        DefaultTableModel model = new DefaultTableModel(colonneR, 0);
        Statement stmt = mysql.connexion.createStatement();
        String query = colonne[j-1];
        ResultSet rset = stmt.executeQuery(query);
     
        while (rset.next()) {
          model.addRow(new Object[] {rset.getString(colonne[1]), rset.getString(colonne[2]),
                       rset.getString(colonne[3])});
     
        }
        stmt.close();
    //*******
    //Problème
        final JTable table = new JTable(model);
    //*******
     
        table.setCellSelectionEnabled(false) ;
        table.setColumnSelectionAllowed(false);
        table.setColumnSelectionAllowed(false);
        table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
     
      Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
     
    /*  table.getTableHeader().addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent event) {
              if (event.getClickCount() < 2) return;
              //int tableColumn = table.columnAtPoint(event.getPoint());
              //int modelColumn = table.convertColumnIndexToModel(tableColumn);
              //System.out.println("Affichage du double clique :"+clique);
            }
          });
    */
        table.setPreferredScrollableViewportSize(new Dimension(500, 70));
     
        if (DEBUG) {
          table.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
              //printDebugData(table);
            }
          });
        }
     
        //Create the scroll pane and add the table to it.
        JScrollPane scrollPane = new JScrollPane(table);
     
        //Add the scroll pane to this panel.
        add(scrollPane);
      }
     
          public void addMouseListener(MouseListener l){
                  table.addMouseListener(l);
         } 
         public int getSelectedRow(){
                 return table.getSelectedRow();
    } 
     
    }

    Le problème vient du bout que j'ai annoté "Problème".
    En fait tu as déclaré une variable locale qui occultait ta variable d'instance et donc tu perdait sa définition à la fin du constructeur.

    Modifie là de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    table = new JTable(model);
    Et ainsi c'est la variable d'instance table que tu vas initialiser.

    Et normalement, plus de nullpointerexception.

  19. #19
    Nouveau membre du Club
    Profil pro
    developeur
    Inscrit en
    Août 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : developeur

    Informations forums :
    Inscription : Août 2004
    Messages : 57
    Points : 34
    Points
    34
    Par défaut
    super merci bcp !

    J'ai encore un petit service a te demander, le double clique marche bien mais seulement avec le clique droit, c'est du au fait que mes cellules sont éditables.
    j'ai regarder sur le site :

    Pour que certaines cellules d'une JTable ne soient pas éditables, il faut créer sa propre classe dérivant de javax.swing.table.DefaultTableModel et redéfinir la méthode isCellEditable(int,int) afin que cette dernière retourne faux pour ces cellules.

    seulement je ne vois pas comment créer ma propre classe dérivant de DefaultTableModel.

    Promis apres j'arrete ! Merci encore pour le mal que tu te donne et la patience dont tu fais preuve

  20. #20
    Nouveau membre du Club
    Profil pro
    developeur
    Inscrit en
    Août 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : developeur

    Informations forums :
    Inscription : Août 2004
    Messages : 57
    Points : 34
    Points
    34
    Par défaut
    c bon j'ai reussi merci bcp pour tout

    j'ai chercher l'exemple sur le site et je l'ai adapter

    Encore merci

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Evenement double click sur une ligne d'un DataGrid
    Par imad_eddine dans le forum ASP.NET
    Réponses: 7
    Dernier message: 19/11/2007, 17h24
  2. Problème de double clique sur barre de titre d'une form
    Par kheldoun ahmed dans le forum Delphi
    Réponses: 10
    Dernier message: 26/06/2007, 16h21
  3. Evenement double CLICK sur JTable
    Par ghotique dans le forum Composants
    Réponses: 1
    Dernier message: 16/02/2007, 00h16
  4. Associer un clique et un double clique sur une listebox
    Par mcdonald dans le forum Tkinter
    Réponses: 3
    Dernier message: 10/06/2006, 16h57
  5. [VB]Double clique sur liste...
    Par STRUFIELD dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 23/01/2006, 13h43

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