web-dev-qa-db-fra.com

Java - Vérifie si JTextField est vide ou non

J'ai donc appris qu'il s'agissait d'une question populaire et que nous avions déjà trouvé la solution. Mais lorsque j'essaie, cela ne fonctionne pas correctement.

Mon JTextField est vide et le bouton n'est pas activé. Lorsque j'écris quelque chose dans mon champ de texte, le bouton n'est pas activé. 

Donc, mon programme devrait vérifier ce champ à chaque seconde, qu'il soit vide ou non. Dès que quelqu'un écrit quelque chose dans le champ de texte, le bouton doit être activé. ^^

loginbt = new JButton("Login");
    loginbt.addActionListener(new loginHandler());
    add(loginbt);

    if(name.getText().equals("")) {
        loginbt.setEnabled(false);
    }else {
        loginbt.setEnabled(true);
    }
18
ColdStormy

Pour cela, vous devez ajouter un écouteur de modification (une DocumentListener qui réagit en cas de modification du texte) pour votre JTextField, et dans actionPerformed(), vous devez mettre à jour la loginButton à activé/désactivé en fonction du fait que la JTextfield soit vide ou non. 

Ci-dessous se trouve ce que j'ai trouvé dans ce fil .

yourJTextField.getDocument().addDocumentListener(new DocumentListener() {
  public void changedUpdate(DocumentEvent e) {
    changed();
  }
  public void removeUpdate(DocumentEvent e) {
    changed();
  }
  public void insertUpdate(DocumentEvent e) {
    changed();
  }

  public void changed() {
     if (yourJTextField.getText().equals("")){
       loginButton.setEnabled(false);
     }
     else {
       loginButton.setEnabled(true);
    }

  }
});
28
sanbhat

Vous avez besoin de quelque chose appelé Document Listener. Voir Comment écrire un auditeur de document .

4
Eng.Fouad

Eh bien, le code qui rend le bouton activé/désactivé: 

if(name.getText().equals("")) {
    loginbt.setEnabled(false);
}else {
    loginbt.setEnabled(true);
}

doit être écrit en javax.swing.event.ChangeListener et attaché au champ (voir ici ). Une modification de la valeur du champ doit amener le programme d'écoute à réévaluer l'état de l'objet. Qu'est-ce que vous attendiez?

3
darijan

utilisez le code suivant:

if(name.getText().equals(""))
{
loginbt.disable();
}
2
user3148337

Pour vérifier que JTextFiled est vide ou pas la condition:

if( (billnotf.getText().length()==0)||(billtabtf.getText().length()==0))
2
user3369245

Essaye ça

if(name.getText() != null && name.getText().equals(""))
{
        loginbt.setEnabled(false);
}
else
{
        loginbt.setEnabled(true);
}
0
Aneeq Anwar
if(name.getText().hashCode() != 0){
    JOptionPane.showMessageDialog(null, "not empty");
}
else{
    JOptionPane.showMessageDialog(null, "empty");
}
0
Sijo Jose