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

Agents de placement/Fenêtres Java Discussion :

[debutant]probleme de recupération de données saisies dans une JDialog


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13
    Points : 9
    Points
    9
    Par défaut [debutant]probleme de recupération de données saisies dans une JDialog
    Bonjour,
    J'ai une fenetre qui permet de voir le contenu d'une commande avec un tableau où sont affiché les différentes lignes de la commande, avec un bouton ajouté qui permet d'ajouter une ligne.
    Quand j'appuis sur ce bouton ca ouvre une boite de dialogue(setModal=true) qui me permet de saisir les champs pour créer des nouvelles lignes et de l'enregistrer dans une base de donnée.
    Mais le problème quand je ferme ma boite de dialogue,le tableau de ma première fenetre n'est pas mis à jour avec les nouvelles lignes saisies.Est il possible et comment puis-je récupérer les informations saisies dans la boite de dialogue fille.J'aimerais pouvoir éviter de faire une requete pour aller rechercher les info dans la base de donnée.

    FenAjouterLigneCommande fenAjouterLigneCommande= newFenAjouterLigneCommande(this,jTRefCom.getText(),jTFournisseur.getText());
    fenAjouterLigneCommande.setVisible(true);

    Merci d'avance!

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,
    Tu peux faire un accesseurs sur ton (ou tes) champs genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public String getTexte(){
     return monTextField.getText();
    }
    dans ta JDialog

  3. #3
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Implémente des getters sur les attributs (méthodes getXX() renvoyant la valeur de l'attribut que tu veux récupére) rque tu veux récupérer de ton JDialog (je suppose que tu as utilisé une classe héritant de JDialog contenant certains éléments)

    Puis depuis le composant ou tu déclares ton dialogue, tu ajoutes au JDialog créé un WindowListener puis au moment ou le dialogue se ferme (ie dans la méthode windowClosed du windowListener que tu as créé) tu récupères les données voulues grâce aux setters et tu en fais ce que tu veux...

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13
    Points : 9
    Points
    9
    Par défaut problème jDialog pas résolu
    J'ai pas réussi dans la méthode windowClosed quand j'appelle la méthode getXX me renvoyant la valeur que je veux récupérer,j'ai un message d'erreur:
    "La méthode getLigneAjoutee() est indéfinie pour le type new WindowAdapter"

    voici mon code:
    dans cette méthode:création de ma JDialog+ ajout WindowListener+ ouverture de maJDialog

    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
     
    private void ouvrirFenAjouterLigne()
    {
    	FenAjouterLigneCommande fenAjouterLigneCommande=new FenAjouterLigneCommande(this,jTReference.getText(),jTFournisseur.getText());
    	fenAjouterLigneCommande.addWindowListener(new java.awt.event.WindowAdapter() {
    		public void windowClosed(java.awt.event.WindowEvent e) {
    		ArrayList<Object[]>	listeRow=this.getLigneAjoutee();
    			for (Iterator i=listeRow.iterator();i.hasNext();){
    			    Object[] row= (Object[])(i.next());
    				myTableModel.insertRow(myTableModel.getRowCount(), row);}
    		}
    	});
    	fenAjouterLigneCommande.setVisible(true);
     
     
     
    }

    La méthode précédente est appelé quand on clique sur le bouton BAjoutLigne dont voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    private JButton getBAjoutLigne() {
    	if (bAjoutLigne == null) {
    		bAjoutLigne = new JButton();
    		bAjoutLigne.setBounds(new Rectangle(30, 434, 237, 32));
    		bAjoutLigne.setText("Ajouter une ligne à la commande");
    		bAjoutLigne.addActionListener(new java.awt.event.ActionListener() {
    			public void actionPerformed(java.awt.event.ActionEvent e) {
    				ouvrirFenAjouterLigne();
    			}
    		});
    	}
    	return bAjoutLigne;
    }
    Merci d'avance

  5. #5
    Invité
    Invité(e)
    Par défaut
    Salut

    Citation Envoyé par melodie53
    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
    private void ouvrirFenAjouterLigne()
    {
    	FenAjouterLigneCommande fenAjouterLigneCommande=new FenAjouterLigneCommande(this,jTReference.getText(),jTFournisseur.getText());
    	fenAjouterLigneCommande.addWindowListener(new java.awt.event.WindowAdapter() {
    		public void windowClosed(java.awt.event.WindowEvent e) {
    		ArrayList<Object[]>	listeRow=this.getLigneAjoutee();
    			for (Iterator i=listeRow.iterator();i.hasNext();){
    			    Object[] row= (Object[])(i.next());
    				myTableModel.insertRow(myTableModel.getRowCount(), row);}
    		}
    	});
    	fenAjouterLigneCommande.setVisible(true);
    
    	
    	
    }
    A mon sens le problème vient de ce que j'ai souligné. this réfère au new WindowAdapter car tu es dans cet objet. Si tu veux faire référence à une méthode de ta classe contenant ta méthode ouvrirFenAjouterLigne() tu peux avoi accès à cette classe directement par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maClasse.getLigneAjoutee()
    si je suis pas clair dis la moi je te mettrai un exemple
    A plus

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13
    Points : 9
    Points
    9
    Par défaut problème pas résolu
    J'ai eesayé de cette manière mais ca indique encore une erreur:
    "Impossible de faire référence à une variable non finale fenAjouterLigneCommande d'une classe définie dans une méthode différente"

    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
    private void ouvrirFenAjouterLigne()
    {
    	FenAjouterLigneCommande fenAjouterLigneCommande=new FenAjouterLigneCommande(this,jTReference.getText(),jTFournisseur.getText());
    	fenAjouterLigneCommande.addWindowListener(new java.awt.event.WindowAdapter() {
    		public void windowClosed(java.awt.event.WindowEvent e) {
    		ArrayList<Object[]>	listeRow=fenAjouterLigneCommande.getLigneAjoutee();
    			for (Iterator i=listeRow.iterator();i.hasNext();){
    			    Object[] row= (Object[])(i.next());
    				myTableModel.insertRow(myTableModel.getRowCount(), row);}
    		}
    	});
    	fenAjouterLigneCommande.setVisible(true);
    
    	
    	
    }

  7. #7
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Fais voir le code entier de la classe, (pour peu qu'il ne fasse par 3km de long, sinon attache en PJ au message)

  8. #8
    Invité
    Invité(e)
    Par défaut
    Salut,
    Tu pourrais faire un truc du genre :
    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
     
    private void ouvrirFenAjouterLigne()
    {
    	FenAjouterLigneCommande fenAjouterLigneCommande=new FenAjouterLigneCommande(this,jTReference.getText(),jTFournisseur.getText());
    	fenAjouterLigneCommande.addWindowListener(new java.awt.event.WindowAdapter() {
    		public void windowClosed(java.awt.event.WindowEvent e) {
    			windowClose();
    		}
    });
    fenAjouterLigneCommande.setVisible(true);
     
    }
     
    private void windowClose(){
    	ArrayList<Object[]> listeRow=getLigneAjoutee();
    	for (Iterator i=listeRow.iterator();i.hasNext();){
    		Object[] row= (Object[])(i.next());
    		myTableModel.insertRow(myTableModel.getRowCount(), row);
    	}
    }
    Un truc du genre devrait marcher car la méthode windowClose() connaît la méthode getLigneAjoutee() vu qu'elle se trouve dans la même classe.

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    Ci-joint le code:
    FenAjouterLigneCommande.java:classe de ma boite de dialogue d'où je veux récupérer des infos.
    FenModifValidCommande.java:à partir de cette classe j'ouvre la boite de dialogue FenAjouterLigneCommande quand je clique sur le bouton BAjoutLigne (appelle de la méthode ouvrirFenAjouterLigne())

    merci d'avance
    FenAjouterLigneCommande.java
    FenModifValidCommande.java

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13
    Points : 9
    Points
    9
    Par défaut reponse de georges7
    salut,

    je ne comprends pas bien ta réponse.
    La méthode ouvrirFenAjouterLigne appartient à la classe FenModifValidCommande.
    La méthode getLigneAjoutee() appartient à la classe FenAjouterLigneCommande.
    la méthode windowClose() ne connait pas la méthode getLigneAjoutee().

  11. #11
    Invité
    Invité(e)
    Par défaut
    En postant je croyais que tout était dans la même classe au temps pour moi...
    Et si tu fais comme j'ai mis mais avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ArrayList<Object[]> listeRow=fenAjouterLigneCommande.getLigneAjoutee();
    Tu as toujours l'erreur du fait que c'est non final ?

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13
    Points : 9
    Points
    9
    Par défaut j'ai trouvé une solution
    J'ai résolu mon problème, dans mon constructeur je récupère le owner de la fenetre parent
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public FenAjouterLigneCommande(Dialog owner,String reference,String fournisseur) {
    		super(owner);
    		this.fournisseur=fournisseur;
    		initialize(reference);
    		parent=(FenModifValidCommande)owner;
     
    	}
    et quand j'en ai besoin j'ajoute une ligne à mon tableau de ma fenetre parent ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    parent.myTableModel.insertRow(parent.myTableModel.getRowCount(), row);
    je ne sais pas si c'est une bonne manière de faire mais ca marche

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

Discussions similaires

  1. [XL-2007] Controler les données saisies dans une colonne
    Par Feuztoff dans le forum Excel
    Réponses: 4
    Dernier message: 22/04/2014, 09h33
  2. Réponses: 1
    Dernier message: 02/05/2010, 10h26
  3. Réponses: 1
    Dernier message: 12/12/2007, 10h35
  4. Réponses: 6
    Dernier message: 30/07/2007, 15h48
  5. Réponses: 30
    Dernier message: 16/11/2005, 15h02

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