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

 Java Discussion :

Stocker une valeur d'un JTextFormatedField


Sujet :

Java

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37

    Informations forums :
    Inscription : Juin 2010
    Messages : 241
    Par défaut Stocker une valeur d'un JTextFormatedField
    Bonjour,
    j'essaye de stocker le résultat d'un champ JTextFormatedField, tapé par l'utilisateur dans une variable pour pouvoir effectuer des opérations dessus par la suite.

    voilà mon programme "simplifié"

    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
    27
     
    import java.*
     
    public class Fenetre extends JFrame {
     public Fenetre(){
     
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    private JPanel Container=new JPanel();
    Container.setLayout(new GridBagLayout());
    double var_score=0;
     
    private JFormattedTextField jtf = new JFormattedTextField(NumberFormat.getIntegerInstance());
     
     jtf.addActionListener(new UtilisateurListener());
             this.setContentPane(Container); 	
             this.setVisible(true);
     
    class UtilisateurListener implements ActionListener{
    		 public void actionPerformed(ActionEvent arg0){
    			 System.out.print(jtf.getValue()+"\n");
    			 var_score = (Double) jtf.getValue(); // LIGNE qui pose problème
    			 System.out.print(var_score+"\n");
     
    		 }
     
    		 }
    }

    Si j'enlève les 2 dernières lignes, mon programme fonctionne.
    Pouvez vous me dire ce qu'il ne va pas ?
    Merci d'avance.

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 155
    Par défaut
    jtf.getValue() n'est pas un Double

    fait un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(jtf.getValue().getClass())
    a la place de tes deux dernière lignes, tu verra son type réel.

    sinon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     int d = Integer.parseInt(jtf.getValue().toString());
    devrait marcher (pas testé)

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37

    Informations forums :
    Inscription : Juin 2010
    Messages : 241
    Par défaut
    Super, cela fonctionne maintenant. Merci

    Petite question bonus :
    Comment rafraichir les données de mon programme ?
    Car lorsque je tape ma valeur dans le jft, et que je clic ailleurs, mes données ne sont pas modifiées ( en tout cas, je ne vois pas de modification). Il faut que je tape la touche "Entrer" dans le champ jft pour "Valider" j'ai l'impression.
    Est-il possible, d'avoir une sorte de bouton, qui actualise tous les états ?

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 155
    Par défaut
    Citation Envoyé par le_sayan Voir le message
    Est-il possible, d'avoir une sorte de bouton, qui actualise tous les états ?
    enregistre une instance de ton UtilisateurListener dans le bouton?

    Le code contenu dans un listener n'est exécuté que lorsque l'évènement se produit. La il s'agit d'un ActionEvent, ce qui a une signification différente selon les objets. Dans un champ texte, c'est un appui sur entrée, en effet.

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 155
    Par défaut
    enregistre une instance de ton UtilisateurListener dans le bouton, si j'ai bien comprit.

    Le code contenu dans un listener n'est exécuté que lorsque l'évènement se produit. La il s'agit d'un ActionEvent, ce qui a une signification différente selon les objets. Dans un champ texte, c'est un appui sur entrée, en effet.

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37

    Informations forums :
    Inscription : Juin 2010
    Messages : 241
    Par défaut
    J'ai essayé cela, mais comme je débute en java, il est fort probable que j'ai oublié de faire (ou mal fait) quelque chose.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // Je déclare
    protected JButton B31 = new JButton("Actualiser");
    // j'ajoute dans mon panel
    container.add(B31);
    // J'ajoute une instance ( enfin je crois)
    B31.addActionListener(new UtilisateurListener());
    Evidemment, l'appuie sur le bouton ne produit aucun effet...
    Je pense que c'est au niveau de l'instance que cela pêche, mais je ne sais pas trop quoi mettre

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 155
    Par défaut
    Pas normal que l'appui sur B31 ne produit rien, il devrait soit afficher du texte, soit générer une erreur.
    Comme j'ai pas ton code, je ne sait pas d'où tu prend ton objet jrf dans le listener, ça peut venir de là. Essaye de faire le cheminement dans ta tête ou dans ton débuggueur.

    au passage, B31 n'est pas un bon nom pour une variable.

  8. #8
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37

    Informations forums :
    Inscription : Juin 2010
    Messages : 241
    Par défaut
    Alors, j'ai changé le nom de mon bouton ( c'est la majuscule ou les chiffres qui ne sont pas recommandés ?).
    Peut être que le problème vient du fait que j'exécute un actionListener depuis le main ?
    Quoi qu'il en soit fois mon petit bout de code :

    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
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    public class menu {
     
     
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Fenetre_accueil accueil = new Fenetre_accueil();
    		accueil.suivant.addActionListener(new bouton_suivant_listener());     //erreur ICI
     
    	}
     
     
                      class bouton_suivant_listener implements ActionListener{
      		       public void actionPerformed(ActionEvent arg0){
      			    if (arg0.getSource()== accueil.suivant) {     // erreur ICI
      				Fenetre menu = new Fenetre();
      							}
      											}
     
     
      														}
    }



    Ce code devrait m'afficher une fenetre d'accueil, avec un bouton "suivant", et lorsque je clic dessus, une nouvelle fenetre "menu" devrait s'afficher.
    Je ne comprend pas les erreurs...

  9. #9
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37

    Informations forums :
    Inscription : Juin 2010
    Messages : 241
    Par défaut
    Bon, alors la première erreur que j'ai faite a été d'imbriquer les 2 classes "menu" et "bouton_suivant_listener".
    Je n'ai plus qu'un seul problème, c'est pour identifier l'appuie du bouton suivant dans mon action listener


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    class bouton_suivant_listener implements ActionListener{
      	public void actionPerformed(ActionEvent arg0){
      			if (arg0.getSource()== suivant) // l'erreur est ICI
      			{
      				Fenetre menu = new Fenetre();
      							}
    "suivant" est un bouton de mon fenêtre "accueil".
    J'ai essayé plusieurs syntaxes : accueil.suivant, this.suivant ...Aucune ne marche.
    Pouvez vous m'indiquer la bonne syntaxe ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment stocker une valeure ecrite dans un JFrame
    Par aphilippartd dans le forum Débuter
    Réponses: 3
    Dernier message: 12/12/2008, 19h10
  2. Réponses: 1
    Dernier message: 22/04/2008, 21h35
  3. [VB2008E] Où stocker une valeur dans les items d'une combobox ?
    Par dsolheid dans le forum Windows Forms
    Réponses: 2
    Dernier message: 19/01/2008, 20h14
  4. Stocker une valeur cachee dans un mail (.msg)
    Par Phil1973 dans le forum VBA Outlook
    Réponses: 1
    Dernier message: 20/07/2007, 11h39
  5. [TABLE]Récupérer et stocker une valeur
    Par stéphane_ais2 dans le forum Access
    Réponses: 11
    Dernier message: 10/03/2006, 15h52

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