Utiliser le texte saisi dans jTextField dans un constructeur

Fermé
Don_vito. Messages postés 2 Date d'inscription dimanche 29 décembre 2013 Statut Membre Dernière intervention 29 décembre 2013 - Modifié par Don_vito. le 29/12/2013 à 12:32
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 29 déc. 2013 à 15:38
Bonjour,

J'aimerai utiliser le texte saisi dans jTextField comme entrée String d'un constructeur d'une autre classe.


// mon Text Field dont je ne vois pas l'utilité puisque code_m est locale

private void jTextField2ActionPerformed(java.awt.event.ActionEvent evt) {

String code_m = jTextField2.getText();


}



Dans le main j'aimerai faire:

Element element = new element ( code_m); (biensûr c'est faux car c'est local)
mais comment avoir cette valeur alors ???

passage par référence ? et comment ?



Merci
A voir également:

2 réponses

KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
29 déc. 2013 à 12:59
C'est du code généré automatiquement par NetBeans ça... Il vaut mieux éviter de l'utiliser, car le code obtenu est vraiment moche et tu en vois tout de suite une limite !
Si tu veux faire de la génération automatique de code swing utilise plutôt Eclipse, il te fera un code beaucoup plus correct, équivalent à ce que tu ferais à la main.

Voici un moyen de faire :

final Element element = new Element();
final JTextField jTextField2 = new JTextField();

jTextField2.addActionListener(new ActionListener()
{
    @Override
    public void actionPerformed(ActionEvent e)
    {
        element.setText(jTextField2.getText());
    }
});

Tu peux également passer par un cache :

final Map<JTextField,Element> cacheElement = new HashMap<JTextField,Element>();
final JTextField jTextField2 = new JTextField();

jTextField2.addActionListener(new ActionListener()
{
    @Override
    public void actionPerformed(ActionEvent e)
    {
        cacheElement.put(jTextField2, new Element(jTextField2.getText());
    }
});

final Element element = cacheElement.get(jTextField2);
0
Don_vito. Messages postés 2 Date d'inscription dimanche 29 décembre 2013 Statut Membre Dernière intervention 29 décembre 2013
29 déc. 2013 à 13:22
Merci pour la réponse.
Mais je ne comprends tjrs pas une chose , je suis supposé écrire ces instructions dans le main?
car j'avais crée une fenêtre (avec Netbeans justement et les leastener et tout se trouvent dans sa classe) , par contre si je suis ce que vous m'avez prescris en creant un TextField , creer un TextField dans le main...je suis un peu perdu.

ce que j'aimerai savoir si c'est possible , c'est en utilisant l'écriture donnée par Netbeans est il possible de bricoler un petit peu pour arriver au résultat?
sinon comment faire (ou ecrire?)

merci encore
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
29 déc. 2013 à 15:38
Ça dépend comment est fait ton main, si c'est celui généré par NetBeans il ne devrait pas y avoir grand chose dedans. Le problème que tu risques de rencontrer c'est que dans ton main tu vas démarrer la fenêtre puis passer à l'instruction suivante qui va créer ton objet Element. Sauf que la valeur du JTextField sera celle définie au démarrage, puisque l'utilisateur n'aura pas encore eu le temps d'en modifier la valeur... donc l'objet Element ne prendra pas en compte les changements.

C'est pour ça qu'il faudrait plutôt mettre ton code dans les Listener, car eux sont modifiés lorsqu'il se passe quelque chose dans la fenêtre (remarque : je ne suis pas sûr que l'ActionListener soit pertinent pour un JTextField).

Evidemment cela dépend de ce que tu veux faire exactement avec tes JTextField et Element, tu ne nous as pas donné d'information qui permettrait de savoir ce que tu veux faire et donc quelle serait la bonne manière de le coder. Mais sans autre information je dirais que le code dans le main est une erreur.
0