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

Langage Java Discussion :

utilisation d'une variable d'une class dans une autre class


Sujet :

Langage Java

  1. #1
    Membre régulier Avatar de the watcher
    Inscrit en
    Juillet 2003
    Messages
    356
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 356
    Points : 123
    Points
    123
    Par défaut utilisation d'une variable d'une class dans une autre class
    Bonjour les amis;
    Je reviens encore vers vous pour obtenir votre aide. Voila : J'ai cette méthode qui initialise ma combobox dans une classe A :
    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
    ...
    public JComboBox getComboFournisseur() {
    	if (ComboFournisseur == null){
    	ComboFournisseur = new JComboBox();
    	ComboFournisseur.setBounds(135, 130, 352, 22);
    	//Action pour sélectionner le numéro du fournisseur
    	ComboFournisseur.addActionListener(new ActionListener() {
    	@Override
    	public void actionPerformed(ActionEvent e) {
    	// TODO Auto-generated method stub
    	Object code = ComboFournisseur.getSelectedItem();
    	TxtNumFourniss.setText((String) fournisseur.get(code));
    	String nomFour = (String) ComboFournisseur.getSelectedItem();
    	txtNomFournisseur.setText(nomFour);
    	}});
    	}
    	return ComboFournisseur;
    	}
    ...
    J'ai aussi cette seconde méthode dans une autre classe B annexe :
    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
    ...
    public static ArrayList<ArticleFourAS400> getListArticleFourAS400(){
    		connexion = new BDConnectAS400();
    		reception = new AddReception();
    String numFour = (String) reception.getComboFournisseur().getSelectedItem();//Un des critère de requette
    String requette = "SELECT B33STFC.FTARTL01.* FROM B33STFC.FTARTL01 WHERE B33STFC.FTARTL01.NFOUAR = 'S.I.C.S')";
    		Statement state;
    		ResultSet res;
    		ArrayList<ArticleFourAS400> list = new ArrayList<ArticleFourAS400>();
    	try{
    	state = connexion.getInstance().createStatement();
    	res = state.executeQuery(requette);
    	while(res.next()){
    	ArticleFourAS400 artFourAS400 = new ArticleFourAS400();
    	artFourAS400.setNARTEF(res.getString(1));
    	artFourAS400.setLARFEF(res.getString(3));
    	artFourAS400.setPXACTF(res.getString(4));
    	list.add(artFourAS400);
    	}
    	res.close();
    	return list;
    	}catch(SQLException e){
    			e.printStackTrace();
    		}
    		return null;}}
    ...
    Mon problème est le suivant : comment déclarer ma variable nomFour de la classe A dans la classe B et l'utiliser comme critère dans ma requette en lieu et place de S.I.C.S qui y est mentionné.
    Je vous remercie d'avance.
    L'important n'est pas de tout savoir mais de savoir où tout se trouve !

  2. #2
    Membre éclairé
    Homme Profil pro
    NoOb
    Inscrit en
    Mai 2007
    Messages
    554
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : NoOb

    Informations forums :
    Inscription : Mai 2007
    Messages : 554
    Points : 852
    Points
    852
    Par défaut
    Citation Envoyé par the watcher Voir le message
    Mon problème est le suivant : comment déclarer ma variable nomFour de la classe A dans la classe B et l'utiliser comme critère dans ma requette en lieu et place de S.I.C.S qui y est mentionné.
    Je vous remercie d'avance.
    Si ta classe B possède une référence vers la classe A alors tu pourras appeler getComboBoxFournisseur() (qui est public).

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

    Informations forums :
    Inscription : Avril 2008
    Messages : 342
    Points : 419
    Points
    419
    Par défaut
    euh je ne suis pas bien sur d'avoir compris la question (ma réponse m'a l'aire évidente) du moins pour ce que tu veux faire

    tu passe un paramètre a t'a méthode qui en plus est static.

    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
    public static ArrayList<ArticleFourAS400> getListArticleFourAS400(String param){
    		connexion = new BDConnectAS400();
    		reception = new AddReception();
    String numFour = (String) reception.getComboFournisseur().getSelectedItem();//Un des critère de requette
    String requette = "SELECT B33STFC.FTARTL01.* FROM B33STFC.FTARTL01 WHERE B33STFC.FTARTL01.NFOUAR = '"+param+"')";
    		Statement state;
    		ResultSet res;
    		ArrayList<ArticleFourAS400> list = new ArrayList<ArticleFourAS400>();
    	try{
    	state = connexion.getInstance().createStatement();
    	res = state.executeQuery(requette);
    	while(res.next()){
    	ArticleFourAS400 artFourAS400 = new ArticleFourAS400();
    	artFourAS400.setNARTEF(res.getString(1));
    	artFourAS400.setLARFEF(res.getString(3));
    	artFourAS400.setPXACTF(res.getString(4));
    	list.add(artFourAS400);
    	}
    	res.close();
    	return list;
    	}catch(SQLException e){
    			e.printStackTrace();
    		}
    		return null;}}
    ...

  4. #4
    Membre régulier Avatar de the watcher
    Inscrit en
    Juillet 2003
    Messages
    356
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 356
    Points : 123
    Points
    123
    Par défaut
    Vous avez en effet raison les amis, il fallait passer en paramètre la variable dans la requette sans toutefois manquer de déclarer cette dernière en static :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public static ArrayList<ArticleFourAS400> getListArticleFourAS400(){
    		connexion = new BDConnectAS400();
    		reception = new AddReception();
    		nomFour = (String) reception.getComboFournisseur().getSelectedItem();//Un des critère de requette
    String requette = "SELECT B33STFC.FTARTL01.* FROM B33STFC.FTARTL01 WHERE B33STFC.FTARTL01.NFOUAR = '"+nomFour+"')";
    		Statement state;
    		ResultSet res;
    ...
    J'ai parcontre un problème mais je ne sais pas s'il faut créer un nouveau post pour cela. A vous de me le dire.
    Voila : Puis que la variable "nomFour" dépendra de la selection du combobox.
    Je souhaiterais mettre une ItemListener afin que lors de l'appel de getComboBoxFournisseur(), cette méthode :
    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
    ...
    public static ArrayList<ArticleFourAS400> getListArticleFourAS400(){
    		connexion = new BDConnectAS400();
    		reception = new AddReception();
    String numFour = (String) reception.getComboFournisseur().getSelectedItem();//Un des critère de requette
    String requette = "SELECT B33STFC.FTARTL01.* FROM B33STFC.FTARTL01 WHERE B33STFC.FTARTL01.NFOUAR = 'S.I.C.S')";
    		Statement state;
    		ResultSet res;
    		ArrayList<ArticleFourAS400> list = new ArrayList<ArticleFourAS400>();
    	try{
    	state = connexion.getInstance().createStatement();
    	res = state.executeQuery(requette);
    	while(res.next()){
    	ArticleFourAS400 artFourAS400 = new ArticleFourAS400();
    	artFourAS400.setNARTEF(res.getString(1));
    	artFourAS400.setLARFEF(res.getString(3));
    	artFourAS400.setPXACTF(res.getString(4));
    	list.add(artFourAS400);
    	}
    	res.close();
    	return list;
    	}catch(SQLException e){
    			e.printStackTrace();
    		}
    		return null;}}
    ...
    soit exécutée
    Merci encore
    L'important n'est pas de tout savoir mais de savoir où tout se trouve !

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    tu tourne le problème completement a l'envers. Ce n'est pas à ta méthode statique d'aller tripatouiller le combobox. C'est à ton combobox d'avoir un itemListener (comme celui que tu as déjà) qui appelle la méthode statique en lui passant le paramètre dont elle à besoin!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ComboFournisseur.addActionListener(new ActionListener() {
    	@Override
    	public void actionPerformed(ActionEvent e) {
    	// TODO Auto-generated method stub
    	Object code = ComboFournisseur.getSelectedItem();
    	TxtNumFourniss.setText((String) fournisseur.get(code));
    	String nomFour = (String) ComboFournisseur.getSelectedItem();
    	txtNomFournisseur.setText(nomFour);
            List list = ClasseB.getListArticleFourAS400(nomFour);
            // fait qqch avec list.
    	}});

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 342
    Points : 419
    Points
    419
    Par défaut
    Citation Envoyé par the watcher Voir le message
    Vous avez en effet raison les amis, il fallait passer en paramètre la variable dans la requette sans toutefois manquer de déclarer cette dernière en static
    heu ... quand je lie ça j'ai peur pour toi static sur la variable dans ce cas n'est pas du tout logique (ou alors je n'ai pas saisie un truc)

    du plus tu n'a pas compris ce que je voulais te dire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ...
    public static ArrayList<ArticleFourAS400> getListArticleFourAS400(String nomFour){
    ...
    String requette = "SELECT B33STFC.FTARTL01.* FROM B33STFC.FTARTL01 WHERE B33STFC.FTARTL01.NFOUAR = '"+nomFour+"')";
    ...
    }
    ce qui fait que après tu reviens sur la solution de tchize_

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    	ComboFournisseur.addActionListener(new ActionListener() {
    	@Override
    	public void actionPerformed(ActionEvent e) {
    	// TODO Auto-generated method stub
    	Object code = ComboFournisseur.getSelectedItem();
    	TxtNumFourniss.setText((String) fournisseur.get(code));
    	String nomFour = (String) ComboFournisseur.getSelectedItem();
    	txtNomFournisseur.setText(nomFour);
            List list = ClasseB.getListArticleFourAS400(nomFour);
            // fait qqch avec list.
    	}});

  7. #7
    Membre régulier Avatar de the watcher
    Inscrit en
    Juillet 2003
    Messages
    356
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 356
    Points : 123
    Points
    123
    Par défaut
    En procédant comme vous me l'avez suggéré c'est à dire ainsi. Dans la classe B
    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
    public static ArrayList<ArticleFourAS400> getListArticleFourAS400(String nomFour){
    		connexion = new BDConnectAS400();
    		reception = new AddReception();
    		nomFour = (String) reception.getComboFournisseur().getSelectedItem();//Un des critère de requette
    String requette = "SELECT DISTINCT B33STFC.FTEFAL01.NARTEF, B33STFC.FTEFAL01.MDIREF, B33STFC.FTEFAL01.LARFEF, B33STFC.FTTBAL01.PXACTF"+""+
    		 " FROM B33STFC.FTEFAL01, B33STFC.FTTBAL01 WHERE B33STFC.FTTBAL01.NARTTF = B33STFC.FTEFAL01.NARTEF AND CRAYEF in ('205','208')"+""+
    		 " AND NFOUEF = (SELECT B33STFC.FTFOUL01.NFOUFO FROM B33STFC.FTFOUL01 WHERE B33STFC.FTFOUL01.RSOCFO = "+"'"+nomFour+"'"+")";
    		Statement state;
    		ResultSet res;
    		ArrayList<ArticleFourAS400> list = new ArrayList<ArticleFourAS400>();
    		try{state = connexion.getInstance().createStatement();
    		res = state.executeQuery(requette);
    		while(res.next()){
    		ArticleFourAS400 artFourAS400 = new ArticleFourAS400();
    		artFourAS400.setNARTEF(res.getString(1));
    		artFourAS400.setLARFEF(res.getString(3));
    		artFourAS400.setPXACTF(res.getString(4));
    		list.add(artFourAS400);	}
    		res.close();
    		return list;}
                    catch(SQLException e){e.printStackTrace();}
    		return null;
    		}
    et dans la classe A:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    ComboFournisseur.addActionListener(new ActionListener() {
    		public void actionPerformed(ActionEvent e) {
    		// TODO Auto-generated method stub
    		//String code = (String) ComboFournisseur.getSelectedItem();
    		Object code = ComboFournisseur.getSelectedItem();
    		TxtNumFourniss.setText((String) fournisseur.get(code));
    		nomFour = (String) ComboFournisseur.getSelectedItem();
    		txtNomFournisseur.setText(nomFour);	
    		List<ArticleFourAS400> list = DAOArticleFourAS400.getListArticleFourAS400(nomFour);
    		lister = list;
    		Table.setModel(new ArticleFourAS400TableModel(lister));
    				}	
    			});
    ...
    du coup cette méthode qui remplit la combobox :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    private void initComboFournisseur(){
    		Thread t2 = new Thread(){
    			public void run(){
    				Set set = fournisseur.entrySet();
    				Iterator i = set.iterator();
    				while(i.hasNext()){
    					Map.Entry me = (Map.Entry)i.next();
    					ComboFournisseur.addItem(me.getKey());
    				}}};
    				t2.start();
    			}
    ne fonctionne plus, il n'ya pas d'erreur non plus.
    L'important n'est pas de tout savoir mais de savoir où tout se trouve !

  8. #8
    Membre régulier Avatar de the watcher
    Inscrit en
    Juillet 2003
    Messages
    356
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 356
    Points : 123
    Points
    123
    Par défaut
    Après quelque recherche par-ci par-là , Je crois que mon problème se situe au niveau de ma requête. Et je pense qu'avec la hashMap, en principe je devrais m'en sortir sauf que ma requête s'effectue sur plusieurs tables ainsi que le critère de la requête est une sous-requête sur une autre table.

    un nouveau post s'avère nécessaire. Si toutefois vous avez une piste, je suis partant.

    Merci à vous les amis.
    L'important n'est pas de tout savoir mais de savoir où tout se trouve !

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/05/2014, 10h23
  2. Réponses: 3
    Dernier message: 13/12/2009, 17h04
  3. Réponses: 40
    Dernier message: 21/06/2007, 17h58
  4. [MySQL] récupérer dans une boucle chaque information MySQL dans une variable différente
    Par gtenthorey dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 06/05/2007, 22h34
  5. Réponses: 1
    Dernier message: 17/01/2007, 21h52

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