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

avec Java Discussion :

Envoyer valeur Jtextfield dans une autre fonction


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Janvier 2018
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2018
    Messages : 300
    Par défaut Envoyer valeur Jtextfield dans une autre fonction
    Bonjour,
    J'ai un JtextField dans une fonction.
    Je voudrai envoyer sa valeur vers une Jdialog lorsque je clique sur un bouton, qui est dans une autre fonction.
    Comment faire?
    Voici le code dans lequel je souhaite intégrer cela :
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
     
    package client;
     
     
    //java Program to create a simple JDialog 
    import java.awt.event.*; 
    import java.awt.*; 
    import javax.swing.*;
    import javax.swing.border.EmptyBorder; 
     
    class JewelsInWork2 extends JFrame implements ActionListener { 
    	private JPanel contentPane;
    	private JPanel contentStart;
    	private JTextField addPseudo;
    	protected static JewelsInWork2 frame;
     
     // frame 
     static JFrame f; 
     static JLabel label;    // member variable
     // main class 
     
        public static void main(String[] args)
        {
            JPanel north = new JPanel();
     
            label = new JLabel();
            label.setHorizontalAlignment(JLabel.CENTER);
     
            JFrame f = new JFrame();
     
            JButton launch = new JButton("Charger");
            launch.addActionListener(new ActionListener()
            {
                public void actionPerformed(ActionEvent e)
                {
                	JewelsInWork2();
                }
            });
     
    		JLabel labelNewPseudo = new JLabel("Pseudo");
    		labelNewPseudo.setFont(new Font("Tahoma", Font.BOLD, 14));
    		north.add(labelNewPseudo);
     
    		JTextField valuePseudo = new JTextField(16);
            valuePseudo.setColumns(12);
            north.add(valuePseudo);
     
            north.add(launch);
     
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            f.getContentPane().add(north, "North");
            f.getContentPane().add(label, "South");
            f.setSize(300,140);
            f.setLocation(200,200);
            f.setVisible(true);
     
        }
     
    	private static void JewelsInWork2() {
    	     // create a dialog Box 
     
    	    f = new JFrame("frame");
     
    	    // create a object 
    	    JewelsInWork2 MainJewels = new JewelsInWork2(); 
     
    		PanelJeu panelJeu = new PanelJeu();
    		panelJeu.setBounds(10, 83, 448, 292);
    		f.add(panelJeu);
    		panelJeu.setLayout(null);
     
    		JPanel panel = new JPanel();
    		panel.setBounds(10, 11, 448, 61);
    		f.add(panel);
    		panel.setLayout(null);
     
     
    	    /*
    		JLabel labelPseudo = new JLabel("Pseudo");
    		labelPseudo.setFont(new Font("Tahoma", Font.BOLD, 14));
    		labelPseudo.setBounds(10, 11, 222, 23);
    		panel.add(labelPseudo); */
     
    		JButton btnMeilleursScores = new JButton("click");
    		btnMeilleursScores.setBounds(303, 11, 135, 23);
    	    // add actionlistener to button 
    	    btnMeilleursScores.addActionListener(MainJewels); 
    		panel.add(btnMeilleursScores);
    		panelJeu.start();
     
     
    	    // set the size of frame 
    	    f.setSize(500, 500); 
     
    	    f.show();
    	}
     
    }
    Le JtextField concerné est "valuePseudo".
    Merci d'avance

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Comme ça par exemple :
    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
    28
    29
    public class Exemple {
     
    	public static void main(String[] args) {
    		JFrame frame = new JFrame("Démo");
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
    		JPanel panel = new JPanel(new GridBagLayout());
    		GridBagConstraints gbc = new GridBagConstraints();
    		gbc.insets=new Insets(5,5,5,5);
    		frame.add(panel);
     
    		panel.add(new JLabel("Champ :"),gbc);
     
    		JTextField field = new JTextField(10);
    		panel.add(field, gbc);
     
    		field.addActionListener(e-> autreFonction(field.getText())); // passage du texte saisi en paramètre de la fonction lors de l'appui sur la touche entrée
     
    		frame.pack();
    		frame.setLocationRelativeTo(null);
    		frame.setVisible(true);
     
    	}
     
    	public static void autreFonction(String text) {
    		JOptionPane.showMessageDialog(null, "Texte : "+ text);
    	}
     
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre éclairé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Janvier 2018
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2018
    Messages : 300
    Par défaut
    Merci pour ta réponse, c'est bien cela que je cherchais.
    Seulement j'ai des difficultés à l'appliqué à mon code.
    Bon dans mon code existant j'avais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
            launch.addActionListener(new ActionListener()
            {
                public void actionPerformed(ActionEvent e)
                {
                	JewelsInWork2();
                }
            });
    JewelsInWork2() est une fonction qui charge une Jdialog. Autant utiliser cette action pour à la fois récupérer la variable de mon JtextField + changer la variable dans mon Jdialog non?
    Comme ça les 2 actions se font au clic du bouton.
    Seulement je n'y parviens pas. J'ai essayé quelque chose comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
                public void actionPerformed(ActionEvent e)
                {
                	JewelsInWork2(valuePseudo.getText());
                }
    Sauf que cela m'affiche une erreur "cannot be resolved". Comment faire en sorte que ma variable soit reconnu dans ce contexte?

    Merci d'avance

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Tu obtiens cette erreur parce que pour invoquer une variable il faut qu'elle soit dans la portée soit accessible et forcément existante. Or dans le code suivant, le problème est l'ordre des instructions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    JButton launch = new JButton("Charger");
    launch.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            JewelsInWork2(); on ne peut pas référencer la variable valuePseudo parce qu'elle est déclarée après launch.addActionListener
        }
    });
     
    JLabel labelNewPseudo = new JLabel("Pseudo");
    labelNewPseudo.setFont(new Font("Tahoma", Font.BOLD, 14));
    north.add(labelNewPseudo);
     
    JTextField valuePseudo = new JTextField(16);
    valuePseudo.setColumns(12);
    north.add(valuePseudo);
    Il suffit de déplacer le code impliqué après la déclaration de la variable :

    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
    JButton launch = new JButton("Charger");
     
    JLabel labelNewPseudo = new JLabel("Pseudo");
    labelNewPseudo.setFont(new Font("Tahoma", Font.BOLD, 14));
    north.add(labelNewPseudo);
     
    JTextField valuePseudo = new JTextField(16);
    valuePseudo.setColumns(12);
    north.add(valuePseudo);
    
    launch.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            JewelsInWork2(valuePseudo); on peut référencer la variable valuePseudo parce qu'elle est déclarée avant launch.addActionListener
        }
    });
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre éclairé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Janvier 2018
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2018
    Messages : 300
    Par défaut
    Merci pour ta réponse, en effet si la variable est créée après il ne peut pas la voir.
    Lorsque j'execute mon code, il me demande de définir que je passe un JtextField (comme ceci) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    	private static void JewelsInWork2(JTextField valuePseudo)
    Seulement avec ce code, il me renvoit l'erreur suivante lorsque j'actionne le bouton.
    Nom : azeaze.png
Affichages : 527
Taille : 31,7 Ko
    J'ai pensé que ce n'était pas le Jtext qu'il fallait passer mais sa valeur, j'ai essayé quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    JewelsInWork2(valuePseudo.getText());
    mais sans succès.

    Merci d'avance

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Ça dépend comment tu définis le paramètre de JewelsInWork2.

    1. Si c'est :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      private static void JewelsInWork2(String text)
      alors le paramètre est un String et il faut passer un String à l'invocation :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      JewelsInWork2(valuePseudo.getText());
      et ça veut dire que dans la méthode tu as un String que tu peux afficher dans le dialogue
    2. Si c'est :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      private static void JewelsInWork2(JTextField field)
      alors le paramètre est un JTextField et il faut passer un JTextField à l'invocation :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      JewelsInWork2(valuePseudo);
      et ça veut dire que dans la méthode tu as un JTextField. Pour afficher son contenu texte, il faut le récupérer par la méthode getText().
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      String message = field.getText();
      Et tu peux donc utiliser message pour l'afficher dans le dialogue.
      Si tu cherches à afficher directement field (donc l'instance de JTextField), le dialogue affichera field.toString(), d'où l'affichage que tu montres dans ta copie d'écran...
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

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

Discussions similaires

  1. [AC-2003] Mettre à jour une étiquette en fonction de la valeur saisie dans une autre
    Par Antisthene dans le forum VBA Access
    Réponses: 9
    Dernier message: 23/07/2014, 19h25
  2. Réponses: 2
    Dernier message: 31/12/2007, 13h50
  3. Réponses: 5
    Dernier message: 29/06/2006, 17h23
  4. Réponses: 3
    Dernier message: 13/06/2006, 16h36
  5. Envoyer du texte dans une autre application (ou send key)
    Par Coussati dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 10/02/2006, 15h26

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