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

 Java Discussion :

Remplir une JTable à partir de plusieurs JComboBox !


Sujet :

Java

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 338
    Points : 0
    Points
    0
    Par défaut Remplir une JTable à partir de plusieurs JComboBox !
    Bonsoir,
    Je travail sur un programme ou l'idée de base est comme suit:
    étant donné qu'on a 4 JComboBox (4 filtres), l'utilisateur doit choisir entre ces 4 filtres (ou certains), une table de données (Jtable) s'affiche et s'adapte automatiquement au choix de l'utilisateur (les Items des JCombobox seront des jointures de tables en SQL).

    Je bloque en ce moment sur quelques problèmes: Comment faire pour créer une structure de requête SQL (les jointures) sachant que l'utilisateur peut choisir entre les 4 filtres (ou bien moins) dans un ordre différent à chaque fois? J'avais l'idée de récupéré ces choix dans une liste puis ajouter une "Where" au premier élément de la liste et "AND" aux autres éléments, mais ça marche pas si l'utilisateur fais un choix dans un JComboBox puis le change. (le premier et le deuxième choix du même JComboBox seront ajouté à la liste et ça posera une problème dans la création de la requete SQL)!

    Comment régler ça svp!

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Il suffit que les écouteurs des 4 combos invoquent une seule et même méthode qui va chercher les sélections des différentes combos et établit la requête correspondante.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 338
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    Salut,

    Il suffit que les écouteurs des 4 combos invoquent une seule et même méthode qui va chercher les sélections des différentes combos et établit la requête correspondante.
    Merci pour votre réponse mais désolé j'ai pas bien compris le principe
    Es ce que ça marche aussi au fur et à mesure à chaque fois que l'utilisateur choisi une autre valeur ? (une mise à jour automatique du Jtable) sachant aussi que l'utilisateur peut choisir les 4 combos (ou bien 3,2,1 seulement et l'ordre aussi n'est pas le même )

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par mohsenuss91 Voir le message
    Merci pour votre réponse mais désolé j'ai pas bien compris le principe
    Tu enregistres sur chaque JCombBox un écouteur qui appelle la même méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    combo1.addActionListener(e-> comboAction());
    combo2.addActionListener(e-> comboAction());
    combo3.addActionListener(e-> comboAction());
    combo4.addActionListener(e-> comboAction());
    Cette méthode va traiter les 4 sélections en même temps comme une seule.
    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
    private void comboAction() {
    		// on récupère toutes les sélections...
    		selection1=combo1.getSelectedItem();
    		selection2=combo2.getSelectedItem();
    		selection3=combo3.getSelectedItem();
    		selection4=combo4.getSelectedItem();
    		// et on les traite en mêem temps
    		if ( selection1==null && selection2==null && selection3==null && selection4==null ) {
    			// pas de sélection
    			// vidage de la JTable
    			((DefaultTableModel)table.getModel()).setRowCount(0); // par exemple
    		}
    		else {
                            // code séquentiel, mais on pouirrait faire une classe/hiérarchie qui gère ça en boucle...
    			StringBuilder sql = new StringBuilder("select * from table");
                            String and = " where ";
    			if ( selection1!=null ) {
    				sql.append(and);
    				sql.append("prop1 = ?");
                                    and=" and ";
    			}
    			if ( selection2!=null ) {
    				sql.append(and);
    				sql.append("prop2 = ?");
                                    and=" and ";
    			}
    			if ( selection3!=null ) {
    				sql.append(and);
    				sql.append("prop3 = ?");
                                    and=" and ";
    			}
    			else {
    				sql.append(and);
    				sql.append("prom3 is null"); // exemple si le critère doit être pris en compte mais sand sélection
                                    and=" and ";
    			}
    			if ( selection4!=null ) {
    				sql.append(and);
    				sql.append("prop4 = ?");
    			}
    			try(PreparedStatement stmt = getConnection().prepareStatement(sql.toString())) {
    				if ( selection1!=null ) {
    					stmt.setXXX(selection1); // pseudo java parce que dépend du type et de la sélection...
    				}
    				if ( selection2!=null ) {
    					stmt.setXXX(selection3); // pseudo java parce que dépend du type et de la sélection...
    				}
    				if ( selection3!=null ) {
    					stmt.setXXX(selection3); // pseudo java parce que dépend du type et de la sélection...
    				}
    				if ( selection4!=null ) {
    					stmt.setXXX(selection4); // pseudo java parce que dépend du type et de la sélection...
    				}
    				ResultSet resultset = stmt.executeQuery();
    				// remplissage de la jtable...
    			}
    			catch(SQLException e) {
    				System.err.println(e.getSQLState());
    				e.printStackTrace();
    			}
    		}
    	}
    Citation Envoyé par mohsenuss91 Voir le message
    Es ce que ça marche aussi au fur et à mesure à chaque fois que l'utilisateur choisi une autre valeur ? (une mise à jour automatique du Jtable) sachant aussi que l'utilisateur peut choisir les 4 combos (ou bien 3,2,1 seulement et l'ordre aussi n'est pas le même )
    C'est le principe des évenements : à chaque nouveau choix dans la combo, on exécute une même méthode qui fait une sélection qui correspond à tous les choix en même temps (ou non choix). Et l'ordre n'a aucun impact normalement : à moins que la requête implique une notion d'ordre (avec des in en cascade par exemple), mais dans ce cas, c'est l'UI qui doit être adaptée, parce que faire une UI évenementiel qui prenne en compte l'ordre de sélection est casse-gueule (tu ne sais jamais quand l'utilisateur abandonne la séquence, la recommence, ou quoi).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

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

Discussions similaires

  1. Remplir une JTable à partir de la base de données
    Par L'aigle de Carthage dans le forum Composants
    Réponses: 1
    Dernier message: 13/03/2012, 17h28
  2. [AC-2002] Remplir une table à partir de plusieurs requêtes
    Par jerome94 dans le forum VBA Access
    Réponses: 6
    Dernier message: 23/10/2011, 17h11
  3. [SWING] remplir une jtable avec une matrice de double
    Par Psykorel dans le forum Composants
    Réponses: 3
    Dernier message: 04/01/2006, 14h14
  4. Remplir une grille à partir d'un arbre
    Par phplive dans le forum Composants VCL
    Réponses: 1
    Dernier message: 04/08/2005, 17h41
  5. [ImageMagick] Générer une image à partir de plusieurs images ?
    Par fichtre! dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 16/02/2005, 15h32

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