2009-11-13 7 views
1

Donc, je crée une petite application java et je me demandais comment je peux obtenir le contenu d'un JTextField et ensuite affecter la valeur dans une variable String, je pensais que ci-dessous serait travail:Mettre le contenu d'un JTextField dans une variable - Java & Swing

JTextField txt_cust_Name = new JTextField(); 
String cust_Name; 
txt_cust_Name.addActionListener(new ActionListener() 
{ 
    public void actionPerformed(ActionEvent e) 
    { 
     cust_Name = txt_cust_Name.getText(); 
    } 
}); 

Maintenant, je pensais que cela enverrait la valeur de la JtextField dans le String Cust_Name.

Quelqu'un a des idées pour le faire?

Vive. Un ActionListener n'est déclenché que lorsque vous appuyez sur la touche Entrée.

Répondre

3

Peut-être que vous devriez utiliser un FocusListener et gérer l'événement focusLost().

Vous pouvez également ajouter un DocumentListener au champ Document du texte. Un DocumentEvent est déclenché chaque fois qu'une modification est apportée au champ de texte.

0

Normalement, un JTextField se trouve sur un formulaire et l'utilisateur peut jouer avec jusqu'à ce qu'il touche le bouton Ok sur le formulaire. Le gestionnaire de ce bouton (ActionListener) récupère alors la valeur du texte en cours dans le champ et fait quelque chose avec.

Voulez-vous faire quelque chose de complètement différent? Avez-vous besoin de répondre à l'entrée lors de la modification, ou seulement lorsque l'utilisateur quitte le champ? Ou est-ce important qu'il ait frappé ENTRER?

Notez qu'un tel comportement non standard pourrait perturber un utilisateur dans la vie réelle. Si vous faites cela pour vous-même, bien sûr, tout est permis.

1

Où que vous devez réellement utiliser votre variable de chaîne, vous pouvez simplement dire:

String cust_Name = txt_cust_Name.getText(); 

Cela suppose que, au moment que vous essayez d'accéder à cette valeur, il a déjà été saisie .. . (par opposition à essayer de mettre à jour la variable chaque fois qu'une touche est pressée)

2

Merci à tous, Ce que j'ai choisi de faire est d'attribuer les valeurs quand un bouton est pressé:

JButton btn_cust_Save = new JButton("Save Customer"); 
         btn_cust_Save.addActionListener(new ActionListener() 
         { 
          public void actionPerformed(ActionEvent ae) 
          { 
           final String cust_Name = txt_cust_Name.getText(); 
           final String cust_Door = txt_cust_Door.getText(); 
           final String cust_Street1 = txt_cust_Street1.getText(); 
           final String cust_Street2 = txt_cust_Street2.getText(); 
           final String cust_City = txt_cust_City.getText(); 
           final String cust_PCode = txt_cust_PCode.getText(); 
           final String cust_Phone = txt_cust_Phone.getText(); 
           final String cust_Email = txt_cust_Email.getText(); 
          } 
         }); 

Th Merci pour toute l'aide.

0

J'ai trouvé que ce code fonctionne assez bien:

package test; 

import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JTextField; 

public class Test extends JFrame { 

private static final long serialVersionUID = -5624404136485946868L; 

String userWord = ""; 
JTextField userInput; 

public Test() { 
    JFrame jf = new JFrame(); 
    JPanel panel = new JPanel(); 
    JLabel jl = new JLabel("Test"); 
    JButton jButton = new JButton("Click"); 
    userInput = new JTextField("", 30); 
    jButton.addActionListener((e) -> { 
     submitAction(); 
    }); 
    jf.setSize(500, 500); 
    jf.setVisible(true); 
    jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    jf.add(panel); 
    panel.add(jl); 
    panel.add(userInput); 
    panel.add(jButton); 
} 

private void submitAction() { 
    userWord = userInput.getText(); 
    System.out.println(userWord);//do whatever you want with the variable, I just printed it to the console 
} 

public static void main(String[] args) { 
    new Test(); 
} 

}

Questions connexes