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

avec Java Discussion :

Jcombobox et les requêtes!


Sujet :

avec Java

  1. #1
    Membre très actif
    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
    Par défaut Jcombobox et les requêtes!
    Bonjour,
    je travail sur une programme en JAVA pour la gestion des établissements scolaires et des employés mais je trouve quelques difficultés:

    1) comment remplir la liste des choix Jcombobox à partir des requêtes sql?
    2) Comment récupérer le choix de l'utilisateur entre trois Jcombobox à crier à partir de ces trois choix des requêtes de jointure ? (genre trois filtres au moins ça dépend du choix entre les trois Jcombobox)


    Sachant que la base de donnée contient les tables suivantes:
    "Employé": qui à comme tables filles "Enseignant" et "Administrative"
    "Etablissement": qui à comme tables filles "Primaire", "CEM" et "Lycée" (qui représentent les établissement des trois niveau scolaire)
    "Matière": chaque Enseignant doit s'occuper d'une seule matière


    Les trois Jcombobox sont:
    *Niveau: (primaire, cem, lycée)
    lorsque l'utilisateur choisi primaire par exemple un autre Jcombobox contenant tout les établissements primaires s'affiche.
    * l'utilisateur va faire un choix entre ces établissements et lorsque il choisi un établissement un autre Jcombobox contenant les matières s'affiche.
    de la même façon lorsque l'utilisateur fait un choix entre les matières une Jtable contenant les informations sur les enseignants s'affiche.

    Comment réaliser cette idée 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 : 55
    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
    Billets dans le blog
    2
    Par défaut
    Salut,;

    Citation Envoyé par mohsenuss91 Voir le message
    1) comment remplir la liste des choix Jcombobox à partir des requêtes sql?
    Il suffit de parcourir le resultset et d'ajouter un item correspondant à chaque enregistrement dans la combo.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    try(PreparedStatement stmt = connection.prepareStatement("SELECT id, label FROM table ")) {
       ResultSet rs = stmt.executeQuery();
     
       while (rs.next()) {
           comboBox.addItem(new ObjectWithId(rs.getString("id"), rs.getString("label"));
       }
     
    }
    catch(SQLException e) {
       e.printStackTrace();
       System.err.println(e.getSQLState());
    }
    Pour les autres combo, il y aura un id provenant de la sélection d'une autre combo :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    try(PreparedStatement stmt = connection.prepareStatement("SELECT id, label FROM table2 WHERE foreignid = ?")) {
       stmt.setLong( 1, ((ObjectWithId)comboBox.getSelectedItem()).getId()); // récupération de l'id sélectionné dans l'autre combo
       ResultSet rs = stmt.executeQuery();
     
       while (rs.next()) {
           comboBox2.addItem(new ObjectWithId(rs.getString("id"), rs.getString("label"));
       }
     
    }
    catch(SQLException e) {
       e.printStackTrace();
       System.err.println(e.getSQLState());
    }

    Citation Envoyé par mohsenuss91 Voir le message

    2) Comment récupérer le choix de l'utilisateur entre trois Jcombobox à crier à partir de ces trois choix des requêtes de jointure ? (genre trois filtres au moins ça dépend du choix entre les trois Jcombobox)
    Pour la gestion des évenements (ItemChangeListener, ou ActionListener), tu peux regarder un exemple ici.

    En utilisant un objet pour représenter un couple id/label, tu peux facilement afficher les libéllés dans la combo, mais pouvoir récupérer l'id correspondant à la sélection : c'est la classe que j'ai appelé ObjectWithId dans mes exemples ci-dessus. Bien sûr, si tu comptes faire une gestion plus complète, tu peux faire des classes qui étendent ObjectWithId et qui représentent complètement les objets gérés dans des tables (avec toutes les méthodes pour accèder à l'ensemble de leurs propriétés).
    Pour l'affichage dans la combo, il faut juste adapter le renderer de la combo. Un exemple :
    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
    public class DemoListCellRenderer {
     
    	public static void main(String[] args) {
     
    		JFrame frame = new JFrame("Démo");
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
    		MyObjectWithId[] data = {
    				new MyObject(1, "Marie", "Directeur de projet"),
    				new MyObject(2, "Paul", "Chef de projet"),
    				new MyObject(3, "Caroline", "Développeur"),
    				new MyObject(4, "Marc", "Développeur"),
    		};
     
    		JComboBox<MyObjectWithId> combo = new JComboBox<>(data);
    		combo.setRenderer(new DefaultListCellRenderer() {
     
    			@Override
    			public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected,
    					boolean cellHasFocus) {
     
    				if ( value instanceof MyObjectWithId) {
    				        MyObjectWithId object = (MyObjectWithId) value;
    					setText(object.name+" ("+object.type+")");
    				}
     
    				 return this;
    			}
     
     
    		});
     
    		combo.addActionListener(e-> afficheSelection(combo.getSelectedItem()));
     
    		frame.add(combo, BorderLayout.SOUTH);
    		frame.setSize(300, 200);
    		frame.setLocationRelativeTo(null);
    		frame.setVisible(true);
     
    	}
     
     
    	private static void afficheSelection(Object selectedItem) {
    		if ( selectedItem instanceof MyObjectWithId ) {
    			System.out.println("Object sélectionné : " + ((MyObjectWithId)selectedItem).id + "-" + ((MyObjectWithId)selectedItem).name);
    		}
    	}
     
     
    	public static class MyObjectWithId {
    		public final long id;
    		public final String name;
    		public final String type;
    		public MyObjectWithId(long id, String name, String type) {
    			this.id=id;
    			this.name=name;
    			this.type=type;
    		}
     
    	}
     
    }
    Ensuite, si ta requête dépend de 2 combos, il suffit de l'adapter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    try(PreparedStatement stmt = connection.prepareStatement("SELECT id, label FROM table3 WHERE foreignid1 = ? and foreignid2 = ?")) {
       stmt.setLong( 1, ((ObjectWithId)comboBox.getSelectedItem()).getId()); // récupération de l'id sélectionné dans la première combo
       stmt.setLong( 2, ((ObjectWithId)comboBox2.getSelectedItem()).getId()); // récupération de l'id sélectionné dans la seconde combo
       ResultSet rs = stmt.executeQuery();
     
       while (rs.next()) {
           comboBox3.addItem(new ObjectWithId(rs.getString("id"), rs.getString("label"));
       }
     
    }
    catch(SQLException e) {
       e.printStackTrace();
       System.err.println(e.getSQLState());
    }
    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. Intercepter les requêtes HTTP et les modifier.
    Par Alexandre T dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 21/09/2005, 19h25
  2. Accents non pris en compte dans les requêtes SELECT
    Par YanK dans le forum Requêtes
    Réponses: 1
    Dernier message: 30/08/2005, 10h57
  3. Réponses: 5
    Dernier message: 16/08/2005, 12h15
  4. Réponses: 44
    Dernier message: 14/03/2005, 09h43
  5. Optimisations mysql sur les requêtes SELECT: index
    Par leo'z dans le forum Débuter
    Réponses: 2
    Dernier message: 29/11/2003, 13h23

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