Passer des paramètres entre deux Frames

Résolu
Dedeloux
Messages postés
11
Date d'inscription
jeudi 8 juillet 2004
Statut
Membre
Dernière intervention
22 mars 2006
- 20 mai 2005 à 17:00
Dedeloux
Messages postés
11
Date d'inscription
jeudi 8 juillet 2004
Statut
Membre
Dernière intervention
22 mars 2006
- 25 mai 2005 à 10:14
Salut !!!
J'ai un gros problème (petit diront certains !!) je voudrais passer des paramètres entre deux frames mais je n'y arrive pas bien sur. Explications : J'ai une classe modifier_personne dans laquelle j'affiche les champs d'une base de données oracle. Je peux modifier ces champs Pour enregistrer les modifications, je clique sur un bouton modifier. J'ouvre un boite de dialogue OK/ Annuler. Je veux que quand je clique sur ok, les champs modifiés s'enregistrent dans la base de données. Mon problème c'est que je n'arrive pas à récupérer ces champs puisque que je ne suis plus sur la frame modifier_personne... Enfin voilà, j'espère que vous comprenez mon problème.
Pour vous aider voici un bout de code :

public class modifier_personne extends JFrame implements ItemListener{
Choice tf = new Choice ();
public JTextField num =new JTextField();
JTextField nom =new JTextField();
JTextField prenom =new JTextField();
JTextField mail =new JTextField();
Vector tab = new Vector();
JButton btmodifp = new JButton("Modifier");

public modifier_personne (){

Connection con ;
String temp= new String();
setBounds (100,100,500,500);
tf.addItemListener((ItemListener) this);
getContentPane().setLayout((new GridLayout (8,2)));
getContentPane().add((new JLabel("Sélectionner une personne :")));
getContentPane().add(tf );
getContentPane().add((new JLabel("Numéro : ")));
getContentPane().add(num);
getContentPane().add((new JLabel("Nom : ")));
getContentPane().add(nom);
getContentPane().add((new JLabel("Prénom : ")));
getContentPane().add(prenom);
getContentPane().add((new JLabel("Adresse mail : ")));
getContentPane().add(mail);
getContentPane().add((new JLabel(" ")));
getContentPane().add((new JLabel(" ")));
getContentPane().add((new JLabel("Valider changements : ")));
getContentPane().add(btmodifp);

btmodifp.addActionListener(
new ActionListener(){
public void actionPerformed (ActionEvent e){
String num1 = new String();
String nom1 = new String();
String prenom1 = new String();
String mail1 = new String();

num1= new Integer(((resultat) tab.elementAt(tf.getSelectedIndex())).num).toString();
nom1 = nom.getText();
prenom1 = prenom.getText();
mail1 = mail.getText();
new boitedialogue(num1,nom1,prenom1,mail1).show();
setVisible(false);

}
}
);

public class boitedialogue extends JDialog implements ActionListener{


public String g_num = new String();
String g_nom =new String();
String g_prenom =new String();
String g_mail =new String();

Frame getFrame() { // récupération de la frame parente
//modifier_personne.this.getNom();


Component component=this;


do{


component=component.getParent();


} while(!(component instanceof Frame));


return (Frame)component;


}

boitedialogue(String num,String nom, String prenom, String mail){

this.g_num= num;
this.g_nom =nom;
this.g_prenom =prenom;
this.g_mail =mail;
//System.out.println(this.g_num+this.g_nom +this.g_prenom);
JOptionPane bd = new JOptionPane();
int retour = JOptionPane.showConfirmDialog(getFrame(),"Confirmer les changements ?","Confirmation",JOptionPane.OK_CANCEL_OPTION);

}


/* (non-Javadoc)
* @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
*/
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if("ok".equals(e.getActionCommand())){

Connection con ;

try {
System.out.println(boitedialogue.g_num+boitedialogue.g_nom + boitedialogue.g_prenom);
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
con = DriverManager.getConnection("jdbc:oracle:thin:@172.16.1.17:1521:bdoracle","lehouxa","audrey");
//System.out.println("Connection réussie");
Statement stmt = con.createStatement();
ResultSet rset = stmt.executeQuery("Update Adresse_mail set nom='"+g_nom+"',prenom='"+g_prenom+"', adresse='"+g_mail+"' where num='"+g_num+"' ");
}
catch(SQLException e1){
System.out.println("SQLException"+e1);
}
catch(Exception e2){
System.out.println("Exception"+e2);
//e2.printStackTrace();
}


}


}


}

Voilà,voilà...
Merci à ceux qui auront une petite idée pour m'aider (et autres aussi lol !!)

4 réponses

hades5
Messages postés
25
Date d'inscription
dimanche 26 décembre 2004
Statut
Membre
Dernière intervention
5 juin 2007

20 mai 2005 à 20:09
Salut,

juste une petite suggestion... pourquoi tu n'utiliserais pas ta boite de dialogue pour juste

demander une confirmation des modifications apportées sur les champs de la classe

modifier_personne ? ....



Autrement, tu crées des valeurs null dans ton instruction SQL ( ..ResultSet rset = stmt.executeQuery("Update Adresse_mail set
nom='"+g_nom+"',prenom='"+g_prenom+"', adresse='"+g_mail+"' where
num='"+g_num+"' ");

Si tu regardes bien tu dis #### ..g_nom ; g_prenom etc... ces méthodes quand tu les appelles,

elles font ce que tu leur demandes de faire c'est-à-dire, créer un autre object ( new String () ;



Voici les modifications que tu devrais apporter ....



public class boitedialogue extends JDialog implements ActionListener{ public String g_num = new String();

String g_nom = "" ; // new String();

String g_prenom = "" ; // new String();

String g_mail = "" ; // new String();

.......



JOptionPane bd = new JOptionPane();

int retour =
JOptionPane.showConfirmDialog(getFrame(),"Confirmer les changements
?","Confirmation",JOptionPane.OK_CANCEL_OPTION);



// condition à ajouter après le bloc si-dessus



if ( retour == 1 ) // je crois que c'est la valeur correspondant à "OK" à vérifier car je suis loin de chez moi actuellement.

{

Cette fois tu peux vérifier tes variables ont les valeurs initialisées par ton constructeur de classe

si-dessous, je l'ai mis en commentaires

/*boitedialogue(String num,String nom, String prenom, String mail){



this.g_num= num;

this.g_nom =nom;

this.g_prenom =prenom;

this.g_mail =mail; */





ici tu continues tes instructions SQL

}



Bon courage



Hadès
3
cs_GodConan
Messages postés
2113
Date d'inscription
samedi 8 novembre 2003
Statut
Contributeur
Dernière intervention
6 octobre 2012
11
20 mai 2005 à 22:13
GRRRRRRRRRRRRR et les majuscule sur les nom de class ...........

GodConan
0
cs_GodConan
Messages postés
2113
Date d'inscription
samedi 8 novembre 2003
Statut
Contributeur
Dernière intervention
6 octobre 2012
11
20 mai 2005 à 22:15
utilise les convention d ecriture java ce sera bcp agreable pour les autres à corrigé la je doit dire que au bout de 2 lignes ca m agace ;-(
pas de majuscule des '_' on dirai un utilisateur MFC ;o) ....

++

GodConan
0
Dedeloux
Messages postés
11
Date d'inscription
jeudi 8 juillet 2004
Statut
Membre
Dernière intervention
22 mars 2006

25 mai 2005 à 10:14
En fait il faut juste remplacer la ligne : if (retour = = 1) par if (retour = = JOptionPane.OK_OPTION) et ça marche. Merci beaucoup pour ton aide Hadès.
0