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);
}
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);
}
}
});
Vous avez besoin de quelque chose appelé Document Listener. Voir Comment écrire un auditeur de document .
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?
utilisez le code suivant:
if(name.getText().equals(""))
{
loginbt.disable();
}
Pour vérifier que JTextFiled est vide ou pas la condition:
if( (billnotf.getText().length()==0)||(billtabtf.getText().length()==0))
Essaye ça
if(name.getText() != null && name.getText().equals(""))
{
loginbt.setEnabled(false);
}
else
{
loginbt.setEnabled(true);
}
if(name.getText().hashCode() != 0){
JOptionPane.showMessageDialog(null, "not empty");
}
else{
JOptionPane.showMessageDialog(null, "empty");
}