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

AWT/Swing Java Discussion :

récupérer des données


Sujet :

AWT/Swing Java

  1. #1
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 95
    Par défaut récupérer des données
    Bonjour j'ai cherché dans les tutos de sun et sur le forum et je n'ai pas trouvé solution à mon probleme.
    J'ai une liste de clients qui s'affiche dans un tableau et je voudrai pouvoir selectionner un client puis en clique droit avoir la possibilité d'appeler une fiche client me donnant toutes les nfo sur le client selectionné.
    J'ai aucune idée de comment récupérer le client séléctionné mais aussi d'appeler ma fiche et de remplir avec les bonnes info.

    Faut il que je mette en parametre de ma fiche un client ou autre? Si vous pouviez m'éclairer ce serait cool.
    Merci d'avance.

  2. #2
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 95
    Par défaut
    Personne ne peut m'aider?

  3. #3
    Invité
    Invité(e)
    Par défaut
    salut,
    je n 'ai pas bien compri ton problème?

  4. #4
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 95
    Par défaut
    J'ai essayé ça qui me parait etre un début de solution pour au moins récupérer la valeur de la cellule. Pour tester si je récupe la valeur je fait afficher un joption pane, le probleme c'est qu'il ne s'affiche pas...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    modifclt.addMouseListener(new java.awt.event.MouseAdapter() {
    						public void MouseClicked(java.awt.event.MouseEvent e) {
    							int indRow = jTtableauclient.rowAtPoint(e.getPoint()); 
    				            int indCol = jTtableauclient.columnAtPoint(e.getPoint()); 
    				            Object contenueCellule = (String) jTtableauclient.getValueAt(indRow , indCol );
    				            JOptionPane.showMessageDialog(null,"Cellule : " + contenueCellule );
     
    							}
    						});
    Aurais je fait une erreur?

    Pour te répondre je veux recupe la valeur d'un cellule qui contient mon client et je afficher dans une nouvelle fiche toutes les info qui le concerne et qui sont dans une base de données.

  5. #5
    Invité
    Invité(e)
    Par défaut
    salut,
    pourquoi ne pas utiliser une JList comme ça tu peut récupérer la valeur des cellules avec la méthode getSelectedIndex() puis tu peut faire le traitement.

  6. #6
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 95
    Par défaut
    Heu comment ça une jList? A la place de ma table?

  7. #7
    Membre éprouvé
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Par défaut
    Je doute qu'une JList lui convienne, il utilise un tableau surement parce qu'il doit mettre plusieurs informations, la JList ne permet d'en mettre qu'une (dans "la version de base" du moins).
    swiixz ta méthode montre bien la voie, n'oublie pas qu'il faut vérifier qu'une ligne a bien été sélectionnée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    int indRow = jTtableauclient.rowAtPoint(e.getPoint());
    if(indRow > -1) {
    //Ligne sélectionnée
    }else {
    //Aucune ligne sélectionée, l'utilisateur a cliqué n'importe où
    }
    Bonne chance.

  8. #8
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 95
    Par défaut
    Vi donc je ne peux pas utiliser de jList surtout que l'utilisateur peut choisir les colones qu'il veut afficher.

    Merci de la réponse mais ya un hic, si la colonne est sélectionnée je fais un affichage du contenu de la cellule et pour verifier si la ligne est bien selectionnée j'ai mi un autre affichage dans le cas ou la ligne n'est pas séléctionnée, et que ce soit l'un ou l'autre j'ai pas d'affichage c'est pas normal.

  9. #9
    Membre éprouvé
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Par défaut
    A quoi correspond la variable modifclt ? Tu n'implémentes pas forcément la bonne méthode de MouseAdapter, essaie avec mousePressed ou MouseReleased.

    Bonne chance.

  10. #10
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 95
    Par défaut
    Modifclt est un menuitem d'un popupmenu, j'ai essaye pressed et released sans succès donc je me doute que le probleme vient de là. Il me faudrait un actionperformed? Le probleme c'est que j'ai deja essaye et les methodes getpoint ne fontionnent pas.

  11. #11
    Membre éprouvé
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Par défaut
    Ah d'accord....

    Et bien oui il faut que tu mettes un ActionPerformed sur le menuitem .

    Tu arrives bien a afficher ton PopupMenu ? Montre moi le code où tu réalises cette action car on va devoir rajouter un petit quelque chose afin de faire ce que tu veux.

  12. #12
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 95
    Par défaut
    Oué c'est bien ce que je pensais. Voici mon tableau.
    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
     
    	public JTable getJTtableauclient() {
    		if (jTtableauclient == null) {					 
    		jTtableauclient = new JTable(new Modelclient());				      	
    		jTtableauclient.setAutoCreateRowSorter(true);
    		jTtableauclient.setColumnSelectionAllowed(true);
    		jTtableauclient.setVisible(true);						
    		jTtableauclient.addMouseListener(new java.awt.event.MouseAdapter() {
    			public void mouseClicked(java.awt.event.MouseEvent e) {
    				if (e.getClickCount()==1 && e.getButton()== MouseEvent.BUTTON3) {
    					JPopupMenu contextMenu = new JPopupMenu() ;
    					JMenuItem choixcol = new JMenuItem("Choix des colonnes");	
    					contextMenu.add(choixcol) ;
    					JMenuItem ajoutclt = new JMenuItem("Ajouter client");						
    					contextMenu.add(ajoutclt) ;
    					JMenuItem modifclt = new JMenuItem("Modifier client");						
    					contextMenu.add(modifclt) ;
    					contextMenu.setLocation(e.getXOnScreen(), e.getYOnScreen());
    					contextMenu.setEnabled(true);
    					contextMenu.setVisible(true);
    					choixcol.addActionListener(new java.awt.event.ActionListener() {
    						public void actionPerformed(java.awt.event.ActionEvent e) {
    							modiftablclt md = new modiftablclt();
    							tableauclt tab = new tableauclt();
    							md.getJFchangercolonne(tab);
    							}
    						});	
    					modifclt.addMouseListener(new java.awt.event.MouseAdapter() {
    						public void MouseReleased(java.awt.event.MouseEvent e) {
    		                            int indRow = jTtableauclient.rowAtPoint(e.getPoint()); 
    				             int indCol = jTtableauclient.columnAtPoint(e.getPoint()); 
    				             if(indRow > -1) {
    			            	Object contenueCellule = (String) jTtableauclient.getValueAt(indRow , indCol );
    			            	JOptionPane.showMessageDialog(null,"Cellule : " + contenueCellule );
    				            	}else {
    				            JOptionPane.showMessageDialog(null,"rien");
    				            	}
     
    							}
    						});	
     
    					}	
    				}
    			});	
    		  }	
    	return jTtableauclient;
    	}

  13. #13
    Membre éprouvé
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Par défaut
    Attention, évite l'initialisation de composants graphiques dans l'EDT (dans le thread qui gère l'interface graphique). Là, à chaque fois que tu fais un click droit, tu recrées un JPopmenu et plusieurs JMenuItem, mais tu sais combien de ressource cela consomme ?! Crées tes éléments au début de la classe, puis dans la méthode mouseClicked, affiche le JPopupmenu, c'est tout. Cela devrait être un peu plus rapide, et ce sera plus propre en tout cas.

    Alors, pour ce qui est de ton problème, enlèves
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    modifclt.addMouseListener(new java.awt.event.MouseAdapter() {
    //..........
    }
    Pour t'aider, il faudrait que je sache sur quel bouton de ton JPopupMenu tu veux réagir.

    Pour l'exemple, je vais dire que c'est ajoutclt, tu n'auras qu'a adapter le code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ajoutclt.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
              int row = jTtableauclient.getSelectedRow();
              if(row > -1) {
                 int indCol = jTtableauclient.columnAtPoint(e.getPoint());
                 // Fais ce que tu as a faire avec les infos
              }else {
                     JOptionPane.showMessageDialog(null,"rien");
              }
          }
    });
    Si on laissait le code comme ça, ça ne marcherai pas car aucune ligne n'est sélectionné quand on fait click droit sur un tableau, il faut donc la sélectionner nous même, tu rajoutes ce code au début de "jTtableauclient.addMouseListener(new java.awt.event.MouseAdapter() {" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int indRow = jTtableauclient.rowAtPoint(e.getPoint()); 
    if(indRow > -1) {
         jTtableauclient.setSelectedRow(indRow);
    }
    Et voilà. De plus, tu peux simplifier ton code en remplaçant ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ()==1 && e.getButton()== MouseEvent.BUTTON3) {
    par ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(e.isPopupTrigger()) {
    Bonne chance.

  14. #14
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 95
    Par défaut
    On en apprend des choses merci beaucoup pour l'aide par contre j'ai quitté mon lieu de stage et la je n'ai pas du tout le pc adequat pour le faire donc je testerai plus tard.

    Merci encore.

  15. #15
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 95
    Par défaut
    Bonjour j'ai essayé ton code mais il me sort deux erreurs,
    l'une disant que Setselectedrow est indefinie pour la jTable et l'autre que Getpoint est indéfinie pour ActionEvent.
    Que rajouter?

  16. #16
    Membre éprouvé
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Par défaut
    Setselectedrow est indefinie pour la jTable
    Oui effectivement, il faut utiliser : setRowSelectionInterval(indRow, indRow)


    Regarde l'api docs pour plus d'informations sur cette méthode.

    Getpoint est indéfinie pour ActionEvent
    Je devais être endormi quand j'ai écris mon message .

    En effet, getPoint n'existe pas pour ActionEvent mais pour MouseEvent.

    Utilises simplement getSelectedColumnCount() pour connaitre la colonne sélectionné.

    Mais il faut sélectionner la bonne colonne lors du cliques droit pour afficher le popup, alors tu dois faire ceci dans "jTtableauclient.addMouseListener(new java.awt.event.MouseAdapter() {" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int column = jTableauclient.columnAtPoint(e.getPoint());
    if(column > -1) {
     jTableauclient.setColumnSelectionInterval(column, column) 
    }
    Bonne chance.

  17. #17
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 95
    Par défaut
    Je dois franchement pas avoir de bol moi -_-! Il me renvoie la meme chose pour getselectedcolumncount().
    'fin à moins que je me sois trompé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    jTtableauclient.addMouseListener(new java.awt.event.MouseAdapter() {
     
    			public void mouseClicked(java.awt.event.MouseEvent e) {
    				int indcol = jTtableauclient.columnAtPoint(e.getPoint()); 
    				if(indcol > -1) 
    				{  
    					jTtableauclient.setColumnSelectionInterval(indcol,indcol); 
    					}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    modifclt.addActionListener(new java.awt.event.ActionListener() {
    					      public void actionPerformed(java.awt.event.ActionEvent e) {	  
    					          int row = jTtableauclient.getSelectedRow();
    					          if(row > -1) 
    					          {
    					             int indCol = jTtableauclient.columnAtPoint(e.getSelectedColumnCount());
    					          }
    					          else 
    					          {
    					                 JOptionPane.showMessageDialog(null,"rien");
    					          }
    					      }
    					});

  18. #18
    Membre éprouvé
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Par défaut
    Citation Envoyé par Moi
    Utilises simplement getSelectedColumnCount() pour connaitre la colonne sélectionné.
    Tu ne dois pas utilser getselectedcolumncount() mais getSelectedColumnCount() ! Pourquoi on s'embète à sélectionné la colonne où se trouve la souris quand tu affiches le popup ? C'est pour ne pas avoir à déterminer la position de la souris après, c'est a dire quand l'utilisateur clique sur une option du JPopupMenu.

    Donc change ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int indCol = jTtableauclient.columnAtPoint(e.getSelectedColumnCount());
    par ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int indCol = jTableauclient.getSelectedColumnCount();
    Bon courage.

  19. #19
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 95
    Par défaut
    Magnifique progression !!! Seul hic et d'ailleurs que je ne comprend pas c'est que ma colonne selectionnée est toujours la meme du coup j'ai beau change de colonne les valeurs sont toujours les memes par contres les lignes changent.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    int indCol = jTtableauclient.getSelectedColumnCount();
    Pourtant avec cette ligne les colonnes devraient changées non?

  20. #20
    Membre éprouvé
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Par défaut
    La méthode getSelectedColumnCount() retourne le nombre de colonne dans ton tableau, elle n'a rien a voir avec la colonne sélectionnée.

    Explique un peu mieux ton problème, j'ai pas tout compris.

    C'est toujours la même colonne qui est sélectionnée quand tu fais cliques droit, c'est ça ?

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

Discussions similaires

  1. Récupérer des données dans excel
    Par alexia2 dans le forum MFC
    Réponses: 1
    Dernier message: 19/05/2005, 15h34
  2. Récupérer des données via le port usb
    Par matmuth dans le forum C++Builder
    Réponses: 12
    Dernier message: 11/05/2005, 16h34
  3. Comment récupérer des données de Outlook Express ?
    Par frenchsting dans le forum API, COM et SDKs
    Réponses: 6
    Dernier message: 29/04/2005, 11h07
  4. Récupérer des données Excel vers Interbase ...
    Par Djedjeridoo dans le forum InterBase
    Réponses: 2
    Dernier message: 20/07/2003, 18h16
  5. cherche module ou langage pour récupérer des données audio..
    Par Ry_Yo dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 12/05/2003, 17h44

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