Récupération de champDeTexte.getText()

Signaler
Messages postés
5
Date d'inscription
dimanche 14 septembre 2008
Statut
Membre
Dernière intervention
7 mai 2010
-
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
-
Bonjour;
j'ai un problème dans la récupération de
champDeTexte.getText();
qui est dans une classe x au
je veut lorsque cliquer sur ok

jComboBox1.addItem(x.champDeTexte.getText()); (jComboBox1 qui est dans une classe y)
SVP comment faire ça!!!!!

Voila mon Code classe X:

Code : Java

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class x extends JDialog implements ActionListener {

private JTextField champDeTexte=new JTextField();

JButton bouton = new JButton("OK");
getContentPane().add(bouton);
bouton.setBounds(230, 60, 60, 23);
bouton.addActionListener(this);


public String getText() {
return champDeTexte.getText();
}
public void actionPerformed(ActionEvent evt) {
//je veut lorsque cliquer sur ok
jComboBox1.addItem(x.champDeTexte.getText()); (jComboBox1 qui est dans une classe y)

dispose();
}

}


Voila mon Code classe y:
Code : Java

public class y extends JDialog implements ActionListener {

public JComboBox jComboBox1= new JComboBox();

JButton bouton = new JButton("add");
getContentPane().add(bouton);
bouton.setBounds(230, 60, 60, 23);

}



merciiiiiiiiiiiiiii

1 réponse

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
133
Salut,

public JComboBox jComboBox1=  new JComboBox();


Déjà, évite de faire ceci, car tu n'as aucune protection sur la variable jComboBox1 (quel nom !!! renomme donc tes contrôles, ton code n'en sera que plus lisible !) qui peut être modifiée de n'importe où.

Imagine ceci :
y.jComboBox1 = null;

Il faut alors prévois ce cas dans ta classe y, en réinitialisant la combobox, avec toutes les implications que ca peut avoir !

Ensuite, la fonction getText n'existe pas pour la classe JComboBox... getText() c'est pour les JTextField, il n'y a aucun intérêt d'avoir un getText pour un combo vu qu'il stocke des Object dans son modèle !

Si tu veux uniquement récupéré la valeur de ton combo, fais un getter :
public Object getSelectedItemInCombo() {
    return jComboBox1.getSelectedItem();
}


Ainsi déjà tu caches l'implémentation qui utilise un combo (encapsulation), et si un jour tu modifie ton combo par un textfield par exemple, tu n'as qu'à modifier la fonction getSelectedItemInCombo et non tout les appels à y.jComboBox1.
En plus, c'est bien plus parlant : y.jComboBox1.getSelectedItem() comparé à y.getSelectedItemInCombo().
Tu peux faire en plus des vérifications dans ton getter qui s'appliquera à TOUS les appels de fonctions, donc moins de code à produire, et moins de risque de bugs.

Le pire, c'est que tu l'as déjà fait avec ton champDeTexte dans ta classe x... alors pourquoi ne pas l'avoir fait aussi dans ta classe y ???

Ensuite, deuxième erreur :

jComboBox1.addItem( x
.champDeTexte.getText());

Non, ton combo est dans ta classe y, donc faut aller chercher la valeur de l'instance de la classe y, pas de la classe x.

Et j'insiste sur ce point : l'instance de la classe y n'est pas le nom de la classe y :
y instanceY = new y();
Object item = y.getSelectedItemInCombo();

Bref, il te reste beaucoup de boulot, et surtout, essaye de comprendre ce que tu fais, c'est comme cà que tu progresseras.

______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement