Problème d'instance

Résolu
luckybenji86 Messages postés 42 Date d'inscription lundi 5 septembre 2005 Statut Membre Dernière intervention 16 mai 2008 - 10 mars 2008 à 11:31
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 - 10 mars 2008 à 14:53
Bonjour,

Voila, mon problème n'est pas trés simple à expliqué mais pour faire simple :

Prenais un classe "a" utilisant le composant swing et depuis le actionListener d'un bouton, celle-ci appel une autre classe "b". Dans la classe "b", on crée un formulaire en swing et voila mon probleme. J'aimerais transmettre les infos inscrite dans le formulaire depuis "b" vers "a".

J'ai essayait de passé l'instance la classe "a" dans la "b" pour pouvoir appelé depuis"b" des variables public de "a" mais ca ne marche pas.

Comment faire ???

Meric d'avance....

P.S. : j'ai deja pensais a re instancier la class "a" dans "b" mais la fenetre de la class "a" est recreer et je me retrouve avec deux fenetre de la classe "a"...

8 réponses

luckybenji86 Messages postés 42 Date d'inscription lundi 5 septembre 2005 Statut Membre Dernière intervention 16 mai 2008 1
10 mars 2008 à 14:29
Ca y est, ca marche.

Mon probleme été comment je transmetté mon instance de Boutique à Formulaire lors de mon appel de classe Formulaire.

//form = new Formulaire(contenuCommande,0,gui);
form = new Formulaire(contenuCommande,0,Boutique.this);
//form.form(contenuCommande,0,gui);
form.form(contenuCommande,0,Boutique.this);

Merci pour vos tes conseils  Ombitious Developper...
3
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
10 mars 2008 à 12:15
Salut:

C'est difficile de juger ce que tu as fait sans avoir un code devant nous. Personnellement je pense que tu as un problème avec la référence this.

En attendant, il est préférable d'encapsuler les données saisies à partir du formulaire dans Bean, par exemple:

publi class PersonBean {
    private String name;
    private String address;
    private int age;
    // Autres attributs
    // ...

    // Constructors
    // ...

    // Getters & Setters
    // ...
}

Bon courage ...
0
luckybenji86 Messages postés 42 Date d'inscription lundi 5 septembre 2005 Statut Membre Dernière intervention 16 mai 2008 1
10 mars 2008 à 12:20
Merci pour ta réponse Ombitious Developper, je pense que c'est ce dont j'avais besoin et le pire c'est que j'ai déja utiliser des classes avec getter et setter.

Je test et je t'en reviens pour le résultat.

Merci encore  ...
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
10 mars 2008 à 12:27
Salut:

Mon ami [luckybenji86] oublies pour le moment la classe [PersonBean].

Concentrons nous sur  les classes A et B.

Est ce que nous donner un bout de code qui montre comment tu fais  appel à la classe B?

En particulier la partie du code qui cause le problème !!!

Cordialement ...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
luckybenji86 Messages postés 42 Date d'inscription lundi 5 septembre 2005 Statut Membre Dernière intervention 16 mai 2008 1
10 mars 2008 à 13:50
Pour pouvoir implanter des valeur dans les string de la classe "PersonBean"  et les récuperer depuis une autre classe, il faut la meme instance sinon on ne peut pas les récuperé je pense. Ai je tort???
0
luckybenji86 Messages postés 42 Date d'inscription lundi 5 septembre 2005 Statut Membre Dernière intervention 16 mai 2008 1
10 mars 2008 à 14:00
Oki, alors la classe contenant le main est celle-ci :

public static void main(String[] args) throws Exception{
       
        String lesLangues[]={ "Francais/French","Anglais/English"};
        int choixLangue =JOptionPane.showOptionDialog(null, "Selectionnez une langue / Select a language","Language",JOptionPane.DEFAULT_OPTION,JOptionPane.QUESTION_MESSAGE,null,lesLangues, lesLangues[0]);
        System.out.println(choixLangue);
       
        if( choixLangue != -1){
            if(choixLangue == 0){
                Boutique bout = new Boutique(args[0],args[1],args[4],args[6]);
                bout.commande(args[0],args[1],args[4],args[6]);
                /*rbProduits = ResourceBundle.getBundle(args[0]);   
                 rbApi = ResourceBundle.getBundle(args[1]);    */            
            }else{
                Boutique bout = new Boutique(args[2],args[3],args[5],args[6]);
                bout.commande(args[2],args[3],args[5],args[6]);
                /*rbProduits = ResourceBundle.getBundle(args[2]);       
                 rbApi = ResourceBundle.getBundle(args[3]);*/                
            }
        }else{
            System.exit(0);
        }   
       
    }

La classe Boutique contient une fenetre swing créer depuis le constructeur et hérite de JFrame.

Lors du clique sur un item du menu, l'actionListener de l'item appel la fonction Formulaire comme ceci :

form = new Formulaire(contenuCommande,0,gui);
form.form(contenuCommande,0,gui);

puis la classe formulaire creer une fenetre dans avec différents champs a remplir puis un bouton pour valider.

Lors de l'appel, de la classe formulaire, gui représente l'instance de la classe Boutique que je transmet à la classe Formulaire pour appelé des variable public de Boutique depuis Formulaire mais ca ne marche pas...
0
luckybenji86 Messages postés 42 Date d'inscription lundi 5 septembre 2005 Statut Membre Dernière intervention 16 mai 2008 1
10 mars 2008 à 14:05
Voici la classe Formulaire :

import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JSeparator;
import javax.swing.JTextField;

public class Formulaire extends JFrame  implements ActionListener  {
    
    private JPanel container = null;//Déclaration de l’objet JPanel    
    private FlowLayout layout = null ;//Déclaration de notre layout    
    
    
    private JLabel ....
    ...
    ...
    public JButton bCommander = null;
    
    
    
    private int printOrMail = 0;
    private String ContenuEditable = null;    
    private Boutique guitest=null;
    
    
    public Formulaire(String contenuEdit, int isTo,Boutique gui){
        super();
        try{
            build();//On initialise notre fenêtre
        }catch(Exception ex){
            System.out.println("erreur -> "+ex);
        }
        ContenuEditable = contenuEdit;
        printOrMail = isTo;    
        guitest = gui;
        
        
    }
    
    private void build(){
        this.setContentPane(getContainer());
        this.setTitle("Formulaire"); //On donne un titre à l’application
        this.setSize(520,460); //On donne une taille à notre fenêtre
        this.setLocation(250,100);        
        this.setResizable(false) ; //On interdit la redimensionnement de la fenêtre
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //On dit à l’application de se fermer lors du clic sur la croix            
    }

    public void form (String contenuEdit, int isTo, Boutique gui) throws IOException{
        JOptionPane.showMessageDialog(null,"Vous allez entrer les informations pour la livraison de la commande","",JOptionPane.INFORMATION_MESSAGE);
        Formulaire form = new Formulaire(contenuEdit,isTo,gui); //On crée une nouvelle instance de notre fenêtre
        form.setVisible(true);            
    }

    private JPanel getContainer(){
        layout = new FlowLayout(); //Instanciation du layout
        layout.setAlignment(FlowLayout.CENTER);//On centre les composants
        
        container = new JPanel() ; //On crée notre objet
        container.setLayout(layout); //On applique le layout
        
        
        lTitre = new JLabel();
       ...
       ...  

        bCommander = new JButton("Commander");
        bCommander.addActionListener(this);
        container.add(bCommander);    
        
        
        
        return container;
    }
    
    public void actionPerformed(ActionEvent e){
        
        if(e.getSource()== bCommander){
            
            //System.out.println("printOrMail ->"+printOrMail);
            if(printOrMail == 0){
                Impression imp = new Impression("",ContenuEditable);
                imp.printContent(ContenuEditable);
            }
            else{
                try{
                    sendMail mail = new sendMail();
                    mail.envoiCourrier(ContenuEditable);
                }catch(Exception ex){
                    
                }                
            }
                    
            guitest.Civil = cbCivil.getSelectedItem().toString();
            guitest.Nom = tNom.getText();
            guitest.Prenom = tPrenom.getText();
            guitest.Adr1 = tAdr1.getText();
            guitest.Adr2 = tAdr2.getText();
            guitest.Adr3 = tAdr3.getText();
            guitest.Ville = tVille.getText();
            guitest.CP = tCP.getText();
            guitest.Tel = tTel.getText();
            guitest.Portable = tPortable.getText();
            guitest.Email = tEmail.getText();         
          
            
            this.setVisible(false);
        }
        
    }

}
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
10 mars 2008 à 14:53
Salut:

C'est comme ça qu'on apprend (On se bloque puis après avoir bien réfléchit on trouve la solution).

Bon courage.
0
Rejoignez-nous