Problème d'instance [Résolu]

luckybenji86 42 Messages postés lundi 5 septembre 2005Date d'inscription 16 mai 2008 Dernière intervention - 10 mars 2008 à 11:31 - Dernière réponse : Ombitious_Developper 2333 Messages postés samedi 28 février 2004Date d'inscription 26 juillet 2013 Dernière intervention
- 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"...
Afficher la suite 

8 réponses

Répondre au sujet
luckybenji86 42 Messages postés lundi 5 septembre 2005Date d'inscription 16 mai 2008 Dernière intervention - 10 mars 2008 à 14:29
+3
Utile
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...
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de luckybenji86
Ombitious_Developper 2333 Messages postés samedi 28 février 2004Date d'inscription 26 juillet 2013 Dernière intervention - 10 mars 2008 à 12:15
0
Utile
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 ...
Commenter la réponse de Ombitious_Developper
luckybenji86 42 Messages postés lundi 5 septembre 2005Date d'inscription 16 mai 2008 Dernière intervention - 10 mars 2008 à 12:20
0
Utile
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  ...
Commenter la réponse de luckybenji86
Ombitious_Developper 2333 Messages postés samedi 28 février 2004Date d'inscription 26 juillet 2013 Dernière intervention - 10 mars 2008 à 12:27
0
Utile
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 ...
Commenter la réponse de Ombitious_Developper
luckybenji86 42 Messages postés lundi 5 septembre 2005Date d'inscription 16 mai 2008 Dernière intervention - 10 mars 2008 à 13:50
0
Utile
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???
Commenter la réponse de luckybenji86
luckybenji86 42 Messages postés lundi 5 septembre 2005Date d'inscription 16 mai 2008 Dernière intervention - 10 mars 2008 à 14:00
0
Utile
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...
Commenter la réponse de luckybenji86
luckybenji86 42 Messages postés lundi 5 septembre 2005Date d'inscription 16 mai 2008 Dernière intervention - 10 mars 2008 à 14:05
0
Utile
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);
        }
        
    }

}
Commenter la réponse de luckybenji86
Ombitious_Developper 2333 Messages postés samedi 28 février 2004Date d'inscription 26 juillet 2013 Dernière intervention - 10 mars 2008 à 14:53
0
Utile
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.
Commenter la réponse de Ombitious_Developper

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.