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 :

Problème de lien entre 3 constructeur


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
    Mai 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 27
    Par défaut Problème de lien entre 3 constructeur
    Voila j'aimerai faire un grand lien entre 3 constructeur ce qui n'est pas simple

    GestionSQLFenetre, ExecutionRequete et CreationEtudiant son mes 3 constructeur :

    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
    public class GestionSQLFenetre extends JFrame{
     
    	private JLabel label,label2,label3,numeroEtudiantLabel,nomLabel,prenomLabel,numVoieLabel,voieLabel,villeLabel,codePostalLabel;
    	private JComboBox liste,liste2;
    	private JPanel panel;
    	private JButton bouton1,bouton2,bouton3;
    	private JTextField numeroEtudiantField,nomField,prenomField,numVoieField,voieField,villeField,codePostalField;
    	private JMenuBar menuBar;
     
        public GestionSQLFenetre() {
        	super();
     
        	build();
        }
        private void build(){
    //..................
    }
    	private JPanel buildContentPane(){
    //...................
    }
    //......
    }
    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
    import java.awt.event.ActionEvent;
    import java.awt.*;
    import javax.swing.*;
     
     
    public class ExecutionRequete extends AbstractAction {
    	/*private CreationEtudiant createEtudiant;*/
    	private GestionSQLFenetre fenetre;
     
      /*public ExecutionRequete(CreationEtudiant createEtudiant, String texte){
     		super(texte);
     
            this.createEtudiant = createEtudiant;
        }*/
        public ExecutionRequete(GestionSQLFenetre fenetre, String texte) {
        	super(texte);
     
    		this.fenetre = fenetre;
        }
     
        public void actionPerformed(ActionEvent e) { 
     
    		//Action lors du clic sur le bouton1
     
    		String gestion = fenetre.getModelGestion().getSelectedGestion();
    		String gestion2 = fenetre.getModelGestion2().getSelectedGestion2();
     
    		if (("Ajouter".equals(gestion2))&&("Gestion Etudiant".equals(gestion))){
    			CreationEtudiant test = new CreationEtudiant();
    		}
        }
     
    }
    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    public class CreationEtudiant {
     
    	private GestionSQLFenetre fenetre;
     
        public CreationEtudiant(GestionSQLFenetre fenetre){
            this.fenetre = fenetre;
        }
     
    	public CreationEtudiant(){
     
    		try{
    			System.out.println("marche");
    			System.out.println(fenetre);
    			// Dec des variable
    			String numeroEtudiant,nom,prenom,numVoie,voie,ville,requete,idville,codePostal;
    			Statement stmt=null;
    			ResultSet rs;
     
    			numeroEtudiant = fenetre.getNumeroEtudiantField().getText();
    			nom = fenetre.getNomField().getText();
    			prenom = fenetre.getPrenomField().getText();
    			numVoie = fenetre.getNumVoieField().getText();
    			voie = fenetre.getVoieField().getText();
    			ville = fenetre.getVilleField().getText();
    			codePostal = fenetre.getCodePostalField().getText();
    			System.out.println("marche");
    			//connexion
    			Class.forName("com.mysql.jdbc.Driver");
    			String url ="jdbc:mysql://localhost/java";
    			// Pour les étudiants : String url="jdbc:mysql://src-mysql/<nom de votre base de données";
    			System.out.println("Connexion a la base de donnees");
    			Connection con = DriverManager.getConnection(url,"root", ""); // Pour les étudiants SRC utiliser utilisateur et mot de passe de connexion à la base de données
    			System.out.println("Connecte");
    			stmt = con.createStatement();
     
    			//Verification de l'existence de la ville dans la base de donnée
    			requete = "SELECT idville FROM ville WHERE ville='"+ville+"';";
    			rs = stmt.executeQuery(requete);
    			if (rs.next()){
    				idville = rs.getString ("idville");
    			} else {
    				idville = "";
    			}
    			if ( idville == "" ) {
    				// La ville n'existe pas
    				// Insertion de la ville dans la table Ville
    				requete = "INSERT INTO ville VALUES (NULL,'"+ville+"','"+codePostal+"');";
    				stmt.executeUpdate(requete);
    				System.out.println(requete);
    				// Insertion de la ville dans la table Adresse
    				requete = "INSERT INTO adresse VALUES (NULL,'"+voie+"','"+numVoie+"',(SELECT idville FROM ville WHERE ville='"+ville+"'));";
    				stmt.executeUpdate(requete);
    				System.out.println(requete);
    			} else {
    			// La ville Existe
    			// Ajout d'une adresse dans la Table adresse avec l'idville existant
    			requete = "INSERT INTO adresse VALUES (NULL,'"+voie+"','"+numVoie+"',(SELECT idville FROM ville WHERE ville='"+ville+"'));";
    			stmt.executeUpdate(requete);
    			System.out.println(requete);
    			}
     
    			//Requete d'insertion dans la table Etudiants
    			requete="INSERT INTO etudiants VALUES ('"+numeroEtudiant+"','"+nom+"','"+prenom+"',(SELECT idadresse FROM adresse WHERE voie = '"+voie+"' AND numVoie = '"+numVoie+"'));";
    			stmt.executeUpdate(requete);
    			System.out.println(requete);
     
    			//deconnexion
    			con.close();
    			System.out.println("Deconnecté");
     
    			fenetre.getLabel3().setText("La requete d'insertion d'un étudiant a été effectué avec succès   ");
     
    		}catch (Exception e){
    			e.printStackTrace();
    		}
    	}
    }
    Donc tout simplement quand j'appuie sur un bouton qui est dans GestionSQLFenete il me lance ExecutionRequete jusqu'a la ca marche, ensuite, il récupere des infos d'une JcomboBox qui est dans GestionSQLFenetre, ca marche aussi ensuite et il vérifie par la conditions si ces les bonne ,pareil cela marche et c'est a ce niveau la que ca bug.

    Quand j'appelle la fonction CreationEtudiant par :

    CreationEtudiant test = new CreationEtudiant();

    A sans problème il se lance mais il n'arrive pas a récup les info qui sont dans les JtextField qui sont dans GestionSQLFenetre car il ne comprend pas le lien pourtant il est défini par :

    public CreationEtudiant(GestionSQLFenetre fenetre){
    this.fenetre = fenetre;
    }

    Et si je lui di de l'executé avec fenetre en parametre directement comme cela :

    CreationEtudiant test = new CreationEtudiant(fenetre);

    Et bien c'est pire rien du tout, il ne me lance meme pas la...

    Merci d'avance de votre aide

  2. #2
    Membre chevronné Avatar de ngpub
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Par défaut
    "CreationEtudiant()" utilise l'attribut fenêtre mais ne l'initialise pas, au contraire de "CreationEtudiant(GestionSQLFenetre)" qui l'initialise mais ne l'utilise pas...

    As-tu essayé de faire un constructeur qui initialise et utilise fenêtre ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 27
    Par défaut
    Oui le 2eme :

    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
    import java.awt.event.ActionEvent;
    import java.awt.*;
    import javax.swing.*;
     
     
    public class ExecutionRequete extends AbstractAction {
    	/*private CreationEtudiant createEtudiant;*/
    	private GestionSQLFenetre fenetre;
     
      /*public ExecutionRequete(CreationEtudiant createEtudiant, String texte){
     		super(texte);
     
            this.createEtudiant = createEtudiant;
        }*/
        public ExecutionRequete(GestionSQLFenetre fenetre, String texte) {
        	super(texte);
     
    		this.fenetre = fenetre;
        }
     
        public void actionPerformed(ActionEvent e) { 
     
    		//Action lors du clic sur le bouton1
     
    		String gestion = fenetre.getModelGestion().getSelectedGestion();
    		String gestion2 = fenetre.getModelGestion2().getSelectedGestion2();
     
    		if (("Ajouter".equals(gestion2))&&("Gestion Etudiant".equals(gestion))){
    			CreationEtudiant test = new CreationEtudiant();
    		}
        }
     
    }
    Il l'initialise et l'utilise pour récupéré une chaine de caractère.

    Sinon dans CreationEtudiant il est initialisé ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        public CreationEtudiant(GestionSQLFenetre fenetre){
            this.fenetre = fenetre;
        }

  4. #4
    Membre chevronné Avatar de ngpub
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Par défaut
    Où est l'initialisation de fenêtre dans le second constructeur ?
    Quel est la valeur de fenêtre ( qu'affiche System.out.println(fenetre) ) ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        public CreationEtudiant(GestionSQLFenetre fenetre){
            this.fenetre = fenetre;
        }
     
     
        public CreationEtudiant() {
             ...
        }

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 27
    Par défaut
    Il affiche null justement c'est çà mon problème il ne voit aucun lien :/

    Ici dans le second constructeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public ExecutionRequete(GestionSQLFenetre fenetre, String texte) {
        	super(texte);
     
    		this.fenetre = fenetre;
        }
    Et elle marche très bien.

  6. #6
    Membre chevronné Avatar de ngpub
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Par défaut
    Dans ExecutionRequete, tu as un constructeur qui initialise fenetre et une méthode actionPerformed(ActionEvent) qui l'utilise, donc pas de problème.

    Dans CreationEtudiant tu as deux constructeurs... (voir mon post #2).
    Pourquoi ne fais-tu pas un seul constructeur ?

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

Discussions similaires

  1. [XI] Problème de lien entre deux tables
    Par campia dans le forum SAP Crystal Reports
    Réponses: 6
    Dernier message: 29/09/2007, 04h49
  2. [XI] Problème de liens entre table
    Par bbussy dans le forum SAP Crystal Reports
    Réponses: 11
    Dernier message: 14/03/2007, 16h07
  3. Labyrinthe : problème de lien entres les cases
    Par spax dans le forum Prolog
    Réponses: 3
    Dernier message: 20/12/2006, 16h05
  4. [VBA E] Problème de lien entre textbox et cellule
    Par vanessaferraz dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 21/06/2006, 08h49
  5. [Upload] Problème de lien entre mes fichiers
    Par temperature dans le forum Langage
    Réponses: 18
    Dernier message: 25/04/2006, 12h15

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