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 :

Récupérer et afficher les infos contenues dans la base de données d'un élément sélectionné dans une JLIST


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2020
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Afrique Du Sud

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2020
    Messages : 12
    Par défaut Récupérer et afficher les infos contenues dans la base de données d'un élément sélectionné dans une JLIST
    Bonjour,
    je suis un debutant en Java et je fait face à un probleme depuis des jours et je me suis resolut à solliciter votre aide !!
    Pour faire court et simple : Comment on recupère les infos de la base de donnée, à partir de ce qui a ete selectionner dans la JList.
    En faite, un utilisateur choisis un element dans une liste et on lui affiche toutes les infos de cet element contenu dans la Base de donnée à travers un 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
    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
     
    try {
    		Class.forName("com.mysql.cj.jdbc.Driver").newInstance();
    		connection = DriverManager.getConnection("jdbc:mysql://localhost/mabase","root","");
    		statement = connection.createStatement();
    		result = statement.executeQuery("SELECT types_pdt FROM Cat1");
     
     
    	    while(result.next())
            { 
     
                dlm.addElement(result.getString("types_pdt"));
     
     
            }
     
    	 list.setModel(dlm);
    		list.setSelectedIndex(0);
    		list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
     
     
        JPanel pan5 = new JPanel();
        pan5.setBackground(Color.orange);
        pan5.add(tab, BorderLayout.CENTER);
     
    	JPanel pan6 = new JPanel();
    	pan6.setBackground(Color.cyan);
     
     
    	JPanel pan7 = new JPanel();
    	pan7.setBackground(Color.GREEN);
    	pan7.add(lab);
    	pan7.add(list);
     
    	split2 = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, pan7, pan5);
     
    	split1 = new JSplitPane(JSplitPane.VERTICAL_SPLIT, split2, pan6);
    	this.getContentPane().add(split1, BorderLayout.CENTER);
     
    	}catch (Exception e) {
    		e.printStackTrace();
    	}
    	list.addListSelectionListener(new AccesInfosPdt());
     
    	this.setVisible(true);
     
     
     
     
     
    }
    class AccesInfosPdt implements ListSelectionListener{
     
     
    	public void valueChanged(ListSelectionEvent arg0) {
     
     
     
     
    	if (!arg0.getValueIsAdjusting()) {
    			String pdt = (String) list.getSelectedValue();
    		System.out.println("Choix : " +pdt); //pour tester la sortie
     
    	try {
    		Class.forName("com.mysql.cj.jdbc.Driver").newInstance();
    		connection = DriverManager.getConnection("jdbc:mysql://localhost/mabase","root","");
    		statement = connection.createStatement();
    		result = statement.executeQuery("select Shops, Prix from ' "+ pdt +" ' ");
    		String columns[] = {"Shops","Prix"};
    		String data[][] = new String[4][2];
    		int i = 0;
    		while(result.next()) {
    			String shop = result.getString("Shops");
    			int prix = result.getInt("Prix"); 
    			data[i][0]= shop;
    			data[i][1] = prix + "";
    			i++;
     
    	}
     
    	tab = new JTable(data, columns);
    	tab.setShowGrid(false);
    	tab.setRowHeight(30);
    	tab.setTableHeader(null);	
     
     
     
    	}catch (Exception e) {
    		e.printStackTrace();
    	}
    	}
    }
    }
    }

  2. #2
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2020
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Afrique Du Sud

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2020
    Messages : 12
    Par défaut Erreure Trouver .... Mais un autre pb d'affichage du tableau...
    Salut, enfin j'ai trouver où etait le pb.
    en lieu et place de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    result = statement.executeQuery("select Shops, Prix from ' "+ pdt +" ' ");
    fallait plutot mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    result = statement.executeQuery("select Shops, Prix from "+ pdt +"  ");
    Maintenant, les informations sont bien recuperer........ au niveau de la console et je n'arrive pas à les afficher par le tableau que j'ai prevu pour cela !!! Bref... mon tableau reste desesperement vide, pourtant les infos sont dispo au niveau de la console... quelqun pourrait-il regarder et me dire ce qui ne va pas ?

    Merci

  3. #3
    Membre chevronné
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mai 2020
    Messages
    348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mai 2020
    Messages : 348
    Par défaut
    Bonjour,

    Comme beaucoup vous remplacez la référence de tab par une nouvelle instance de JTable, mais vous ne remplacez pas le "visuel". Pour celà il vous faudrait supprimer l'ancienne JTable de son conteneur (pan5) et ajouter la nouvelle.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    pan5.invalidate();
    pan5.removeAll();
    pan5.add(tab);
    pan5.revalidate();


    Même si j'ai le sentiment de me répèter, Swing est un modèle MVC. Ce modèle n'est pas compliqué à comprendre mais facilite grandement les choses car vous n'avez plus à modifier vos vues en supprimant et ajoutant des élements. Il suffit de modifier le modèle pour que les vues se mettent à jour.

  4. #4
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2020
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Afrique Du Sud

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2020
    Messages : 12
    Par défaut Afficher ma JTable
    Salut,
    merci bcp gervais.b pour ta disponibilite.
    Mais je vais etre honnete pour te dire que j'ai pas vraiment compris ton explication.
    "Comme beaucoup vous remplacez la référence de tab par une nouvelle instance de JTable, mais vous ne remplacez pas le "visuel"..... je ne vois pas du tout !! Pourrais-tu etre plus explicite dessus, en utilisant mon exemple de code ?


    merci pour ta comprehension et ton aide...

  5. #5
    Membre chevronné
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mai 2020
    Messages
    348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mai 2020
    Messages : 348
    Par défaut
    Dans cette partie, vous déclarez le conteneur pan5 qui devrait contenir tab.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    JPanel pan5 = new JPanel();
        pan5.setBackground(Color.orange);
        pan5.add(tab, BorderLayout.CENTER);
    Plus loin, lorsque vous avez récupérer vos informations, vous faites ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    tab = new JTable(data, columns);
    	tab.setShowGrid(false);
    	tab.setRowHeight(30);
    	tab.setTableHeader(null);
    C'est à dire que vous écrasez le référence de tab par une nouvelle. Mais l'ancienne reste présente et affichée dans pan5. C'est juste que la JTable de pan5 n'est plus celle représentée par tab. Si vous imprimez tab avant et après, vous verrez que le résultat n'est pas le même c'est une preuve que cette variable ne représente plus la même chose*.

    Il faut donc en plus de celà, rajouter le code que je vous ai donné précédemment pour supprimer le contenu de pan5 et le remplacer par votre nouvelle JTable. Un autre méthode un peu plus propre serait d'utiliser tab.getModel().setValueAt(...) pour modifier le contenu de votre JTable dans la boucle while(result.next()) {.


    * Pas tout à fait, mais restons sur des concepts simples.

  6. #6
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2020
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Afrique Du Sud

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2020
    Messages : 12
    Par défaut Afficher ma JTable
    Salut à nouveau gervais.b

    je te remercie deja une fois de plus pour cette disponibilité...... je sais que tout semble très évident pour vous et sans doute vous etes embeter d'expliquer ce aui semble très évident à votre niveau.
    Sauf que moi, je suis nouveau sur Java, et donc forcement les concepts faut un peu plus me les faire comprendre pour que ca passe ...

    J'ai essayer vos conseils, mais je galere toujours dessus, rien n'a changer de mon coter... du coup je me demandais, si il ne fallait pas plutot aue j'essayes avec l'autres methodes que vous evoquer ici : "Un autre méthode un peu plus propre serait d'utiliser tab.getModel().setValueAt(...) pour modifier le contenu de votre JTable dans la boucle while(result.next()) {.
    "


    Pouvez-vous me dire comment je peux le faire dans mon cas ici ?

    Merci beaucoup pour vos efforts....

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

Discussions similaires

  1. Réponses: 21
    Dernier message: 22/07/2009, 14h19
  2. Réponses: 4
    Dernier message: 27/01/2009, 18h14
  3. récupérer une info contenue dans une fenetre modale
    Par glouffy6 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 21/12/2008, 23h51
  4. [O-00] Afficher les images contenu dans un message
    Par Brunodm13 dans le forum Outlook
    Réponses: 5
    Dernier message: 17/12/2008, 18h53
  5. Réponses: 7
    Dernier message: 24/04/2006, 15h48

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