Récupération de champDeTexte.getText()

lalaing Messages postés 5 Date d'inscription dimanche 14 septembre 2008 Statut Membre Dernière intervention 7 mai 2010 - 25 mars 2010 à 11:52
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Derniè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!!!!!

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

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
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
0
Rejoignez-nous