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 :

Remplir une JComboBox à l'aide d'une requête ?


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2006
    Messages : 51
    Par défaut Remplir une JComboBox à l'aide d'une requête ?
    Salut à tous!

    Bon je suis pas sur d'être dans la bonne section, mais je pense que c'est bien un problème d'ordre général. C'est peut être un peu complexe à expliquer, mais je vais faire de mon mieux :

    En fait je dois développer une petite interface qui permet d'intéragir avec une base de donnée (pas besoin des détails). La base de donnée possède une table avec la structure suivante :

    (concept_ID, glossary_ID, term, Wiki_concept, language)

    En gros, à chaque terme dans la base correspond un wiki_concept : par exemple pour le terme "java" on aura les wiki "café", "language de prog" etc...

    Ca va jusque la?

    Bon...donc, mon interface permet en gros de faire ressortir toutes les informations concernant un terme que l'utilisateur rentre dans un textfield.

    MAIS

    Je dois en fait accessoirement ajouter une liste (moi je prefere une JComboBox c'est plus propre) qui affiche tous les wiki_concepts qui peuvent correspondre à un terme que l'utilisateur rentre!

    En gros voila à quoi ca ressemble :



    Maintenant, la ou je bloque :

    Je ne parviens pas à remplir cette combobox avec les wiki. L'idée de base étant d'avoir un tableau de string que je vais remplir à l'aide d'une bête requete qui demande à la base de me renvoyer tous les wiki_associés au terme entré par l'utilisateur...mais le probleme c'est que je ne parviens pas à trouver un moyen de remplir le tableau puis d'afficher son contenu dans la combobox. En fait le code ressemble à ca:

    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
     
    public class UserInterface extends JFrame implements ActionListener {
     
    	private String [] wiki;
     
    	public UserInterface() {
     
    	//Dans cette partie du code on à la création et la mise en place des différents composants de l'interface, dont :
    	JComboBox cb = new JComboBox(wiki);
     
    	JButton b = new JButton("Search Wikis");
    	b.addActionListener(this);
     
    }
     
    }
     
    ...
     
    public void actionPerformed(ActionEvent ae)  {
     
    if(ae.getSource().equals(b)) {
    			try {
    			String s = "Select distinct wiki_concept from analyser.glossaries where trim(term)=?";
    			ps1 = dbConnection.prepareStatement(s);
    			ps1.setString(1,tf.getText().toString());
    			ResultSet rs1 = ps1.executeQuery();
    			int length = 0;
     
    			while (rs1.next()){
    				length++;
    				String name1 = rs1.getString(1);
    				for (i=1;i<length;i++) {
    				wiki[i]=name1;	
     
    					}
    				}
    			}
     
    		catch (Exception e){
    			System.out.println("Error : "+e);
    		}
    		}
     
    }
    PETITE PRECISION : le code au dessus est il me semble "foireux" avec le length, mais c'est pour montrer l'idée plus qu'autre chose

    Les problemes:

    -Je ne peux pas connaitre la taille du tableau à l'avance car je ne connais pas le nombre de wiki_concepts pour un terme donné, je peux pas initialiser le tableau. Donc je me suis dis que j'ai qu'a créer un entier "length" que j'incrémente de 1 pour chaque résultat qu'il trouve => ca sera la taille du tableau.
    -Meme si je parviens à remplir le tableau dans la partie actionlistener, comment je fais pour le "remonter" dans la premiere partie du code pour le combobox affiche ce qu'il y a dedans?...

    J'espere avoir été aussi clair que possible...en fait c'est plus un problème de modélisation que j'ai je crois, j'ai besoins d'yeux neufs dessus :p

    N'hésitez pas à demander si un truc n'est pas logique, je ne voulais juste pas poster les 200 lignes de code de l'interface

    Merci pour la lecture!

    Salutations et bon w-e à tous,

    Spl0tch

  2. #2
    Membre émérite Avatar de Pollux
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    706
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 706
    Par défaut
    Dans l'api de JCheckbox tu verras une méthode addItem qui te permet de faire très simplement ce que tu veux...

    Il faut encore noter quelque chose... Tu fais une requete sur la base de données dans la méthode actionPerformed, or tu te trouves dans l'EDT ce qui fait que si ton traitement devient un peu long, ton interface peut devenir anormal alors fais attention. Si jamais jète un oeil sur SwingWorker pour un traitement long en tâche de fond..

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2006
    Messages : 51
    Par défaut
    Je suppose que tu veux parler de l'API de JComboBox et non de JCheckBox , j'ai en effet vu le addItem en cherchant sur le net. Je regarderai aussi pour swingworker, merci pour le conseil

    Question : est ce que la méthode que j'emploie pour définir la longueur du tableau avec le "length" est une bonne idée? Est elle bien implémentée?

    Merci pour ta réponse rapide!

    EDIT :

    Ou alors pas besoin de tableau? Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    try {
    				String s = "Select distinct wiki_concept from analyser.glossaries where term='java'";
    				Statement st = dbConnection.createStatement();
    				ResultSet rs = st.executeQuery(s);
     
    					while (rs.next()){
    						String name1 = rs.getString(1);
    						cb.addItem(name1);
    						}
     
    					}
    		}
    Ca me semblerai être le plus facile et logique, mais marche pas

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2006
    Messages : 51
    Par défaut
    Bon désolé de passer pour le n00b de service ( ), mais je ne parviens pas à remplir le jcombobox à travers l'actionlistener sur le bouton b, j'ai beau essayer

    Quelqu'un pourrait me proposer un (ou le bout de code) pour y parvenir? C'est à dire remplir la combobox avec ce que me retourne la requête sur la base...

    Merci

  5. #5
    Membre émérite Avatar de Pollux
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    706
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 706
    Par défaut
    Tu as une erreur ou quelque chose?

    Parce que ton appel cb.addItem devrait te rajouter ton élément comme tu l'as fait...

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2006
    Messages : 51
    Par défaut
    Ouai j'ai quelques erreurs avec le printstacktrace, je les posterai ce soir, suis en cours la!

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

Discussions similaires

  1. [XL-2003] Remplir une combobox à l'aide d'une checkbox
    Par mentat dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 28/08/2009, 16h57
  2. remplir un rapport à l'aide d'une commande
    Par asprog dans le forum Windows Forms
    Réponses: 11
    Dernier message: 23/07/2009, 01h06
  3. Réponses: 2
    Dernier message: 26/07/2007, 14h27
  4. Comment remplir un dbcombo à l'aide d'une base donnée ?
    Par eclectik dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 27/09/2006, 15h50
  5. Réponses: 6
    Dernier message: 09/12/2005, 11h14

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