lalaing
Messages postés5Date d'inscriptiondimanche 14 septembre 2008StatutMembreDernière intervention 7 mai 2010
-
25 mars 2010 à 11:52
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013
-
25 mars 2010 à 12:24
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!!!!!
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);
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 25 mars 2010 à 12:24
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