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 :

Mettre à jour une JComboBox dans la fenêtre principale après avoir ajouté une valeur dans une deuxième fênetre


Sujet :

AWT/Swing Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2013
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2013
    Messages : 49
    Points : 39
    Points
    39
    Par défaut Mettre à jour une JComboBox dans la fenêtre principale après avoir ajouté une valeur dans une deuxième fênetre
    Bonjour à tous.

    Je viens vers vous parce que je n'arrive pas a faire ceci:

    J'ai une application avec une fenêtre principale (JTabbedPane). Dans cette fenêtre j'ai un formulaire pour ajouter des données dans ma base (Postgresql) pour des Personnes (tpersonnes):
    -Nom, Prenom, Ville de Naissance, etc.
    Prenons l'exemple de la Ville de Naissance, dans mon formulaire j'utilise une JComboBox pour montrer toutes les villes qui existent dans ma base de données, elles sont enregistrés dans une autre table de ma base (tvilles), si la ville de naissance à ajouter existe, pas de problème, on la sélectionne et on récupère en arrière-fond la valeur de son Id (bigserial), pour l'ajouter dans la colonne id_ville_naissance de tpersonnes.

    Mais… si la personne est née dans une ville qui n'existe pas encore dans tvilles, il faudra bien la créer. Je pourrais bien le faire sur la même fenêtre, mais il y a un problème, je dois indiquer aussi à quel Département et à quel Pays appartient ma nouvelle ville. Donc j'ai pensé que le mieux c'était d'ouvrir une deuxième fenêtre avec formulaire pour ajouter la nouvelle ville, son département, son pays, l'enregistrer dans ma base de donnés, prendre son Id (dans la fenêtre principale je mets les Ids de plusieurs combos dans un Map, pour le lire au moment d'exécuter la requête d'ajout) et fermer cette fenêtre disons auxiliaire. Encore pas de souci pour faire tout ça.

    Là où je bloque c'est au moment de retourner à la fenêtre principale. ¿Comment puis-je actualiser ma combobox avec la ville qui vient d'être ajoutée, et continuer à remplir les autres champs? Bien sûr, la combobox principale montrera la valeur écrite avant d'ouvrir la deuxième fenêtre (qui sera dans la plus part de cas la valeur définitive), mais il se peut que, par exemple l'utilisateur aie décidé de corriger cette valeur (dans la deuxième fenêtre). C'est à dire, je voudrais montrer dans la combobox principale cette valeur qui vient d'être ajouté en la prenant de la base de donnés directement.

    Voici la partie mon code en question:
    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
    	public void crearComboInteger(final String comboTabla, String strPosicion, final String strColumna, final String strId, String strConsulta){
    		String sSQL="SELECT "+strId+", "+strColumna+" FROM "+ strConsulta +" ORDER BY "+strColumna;	
    		final JComboBox combo = new JComboBox ();	
    		ComboLlenar comboInteger = new ComboLlenar();
    		comboInteger.llenarInteger(combo, strId, strColumna, strId, sSQL);
    		combo.setToolTipText("Seleccione un valor en la lista o escriba uno nuevo...");
    		combo.setName(strTabla);
    		combo.setActionCommand(strSQL);
    		combo.setEditable(true);
    		final ComboAutoNoEstricto comboAuto  = new ComboAutoNoEstricto(combo);
    		combo.getEditor().getEditorComponent().addFocusListener(new FocusListener(){
    			private String strMsgContenido ="";
    			private String strMsgTitulo="Aviso de nuevos datos";
    			private String strNuevo="";
    			public void focusGained(FocusEvent e) {			}
    			public void focusLost(FocusEvent e) {
    //***MUY IMPORTANTE
    			if ((comboAuto.getEstatus() == false) && (combo.getSelectedItem()!= null)) {
    				strNuevo= combo.getSelectedItem().toString();
    				strMsgContenido = "<html>El dato: <font color=red><b><u>" + strNuevo + "</u></b></font> no existe. "+
    							 		"¿Quiere agregarlo? <br><br>Verifique que esté escrito correctamente antes de agregarlo.</html>" ;
    				strTabla=combo.getName();
    				if (Mensajes.verSiNo(strMsgContenido, strMsgTitulo) == JOptionPane.YES_OPTION){
     
    //Ouvre una deuxième fênetre pour ajouter les données. 
    					new frmAgregarDosCampos(strNuevo, strTabla).setVisible(true);
     
    //*******Le problème est ici**********
    /* Je voudrais retourner a ma fênetre originale, actualiser la combobox et recuperer son Id avec:
    					intMapa.put(strTabla,agregar.getIdEntero()); */
    					}
    				}
    Merci, si quelqu'un peut me éclairer.

  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,

    Un moyen simple serait de refaire la requête qui a servie à remplir la combo, après avoir ajouter la nouvelle ville. Certes, c'est dommage de solliciter la base juste pour ça alors qu'on a normalement la nouvelle ville sous la main (enfin, je veux dire une instance d'objet qui représente cette nouvelle ville) : on peut donc l'ajouter au modèle de la combo, si tant est qu'on ait pris soin de lui affecter un MutableComboBoxModel (voir sa méthode addElement).
    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 membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2013
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2013
    Messages : 49
    Points : 39
    Points
    39
    Par défaut
    Merci Joel,

    Ce n'est pas bête de refaire la requête, car je pensais à une autre chose: puisqu'il s'agit d'un formulaire d'ajout de données, l'utilisateur pourrais ajouter plusieurs personnes (une après l'autre) avec le même formulaire, en appuyant sur un bouton "Enregistrer" on viderait les champs texte, mais les combos on les laisserait intacts, sauf ceux qui on reçu de nouvelles données, ils devraient être mis à jour.

    Je regarderait les liens que tu m'as envoyé et je réfléchirais a la meilleur solution.

  4. #4
    Modérateur
    Avatar de MasterMbg
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 719
    Points : 1 493
    Points
    1 493
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    Salut,
    Certes, c'est dommage de solliciter la base juste pour ça alors qu'on a normalement la nouvelle ville sous la main (enfin, je veux dire une instance d'objet qui représente cette nouvelle ville) : on peut donc l'ajouter au modèle de la combo, si tant est qu'on ait pris soin de lui affecter un MutableComboBoxModel (voir sa méthode addElement).
    Salut,
    C'est la meilleure approche je pense et je l'utilise souvent. Juste que, je ne rajoute le nouvel élément qu'après la réussite de l'insertion sinon, on risquerait avoir certains éléments dans la JComboBox alors qu'ils ne seraient effectivement pas insérés dans la BD.
    Ravi de te retrouver joel
    Plus tu apprends sérieusement, plus tu te rapproches d'un savoir noble. Une chose est certaine, les difficultés ne s'écarteront de ton chemin...

    Tu es nouveau dans le développement Android, la page des COURS est là pour te faciliter la vie
    Tu peux trouver la réponse à ta question dans la FAQ
    Retrouvez mon tutoriel sur la consommation des services web SOAP
    Pense à voter positivement en appuyant sur en bas à droite de la réponse qui t'a donné une piste de solution.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2013
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2013
    Messages : 49
    Points : 39
    Points
    39
    Par défaut
    Je marque la discussion comme résolue, car je pense passer la projet vers JavaFX.

    Il faudra apprendre quelques concepts mais, j'ai vu des choses qui m'ont beaucoup attiré dans JavaFX.

    Merci.

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

Discussions similaires

  1. [Graphics View] Insérer un item à partir d'une fenêtre de dialogue dans la fenêtre principale
    Par skanderbahloul dans le forum Débuter
    Réponses: 5
    Dernier message: 25/11/2014, 19h40
  2. Réponses: 0
    Dernier message: 10/01/2009, 19h40
  3. Réponses: 6
    Dernier message: 02/06/2008, 10h17
  4. [C] Scrollbar dans la fenêtre principale
    Par kynri dans le forum Windows
    Réponses: 1
    Dernier message: 21/10/2007, 22h09
  5. Réponses: 3
    Dernier message: 19/10/2006, 09h51

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