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");
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();
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
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) ....
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.