2014-04-18 4 views
0

J'écris un petit éditeur de texte avec Java SWT. Si le champ de texte de l'objet "Texte" est modifié, le récepteur doit définir une valeur booléenne sur true, que le champ de texte a été modifié. Et quand je veux quitter l'éditeur, il devrait me demander d'enregistrer si le champ de texte a été changé. Mais la variable booléenne ne change leur valeur que dans leur ModifyListener? Si je pousse sur le bouton quitter, le sélecteur de liste réagit et il devrait me demander d'enregistrer, mais il n'a pas demandé à.Java SWT ModifyListener définir une variable booléenne

Quel est mon échec?

public class ModifyListenerTextField implements ModifyListener { 

private Boolean changedTextField; 

public ModifyListenerTextField(Boolean changedTextField){ 
    this.changedTextField = changedTextField; 
} 

@Override 
public void modifyText(ModifyEvent arg0) { 
    if(!changedTextField.booleanValue()){ 
     changedTextField = Boolean.TRUE; 
    } 
} 

} 
+0

Veuillez poster le code complet et clarifier ce qui ne fonctionne pas. A noter: Il n'y a pas besoin d'utiliser un 'Boolean' ici, un' boolean' suffira. Et pourquoi le transmettez-vous au constructeur du champ de texte? – Baz

+0

J'utilise le booléen au lieu du booléen primitif parce que je dois passer la référence de la variable booléenne à vérifier si la variable est changeante à vrai ... – Oni1

+0

Pourquoi ne pas simplement ajouter une fonction get à votre classe qui retourne le booléen? – Baz

Répondre

-1

C'est assez simple. Vous n'avez pas besoin de mettre en œuvre quoi que ce soit. Vous pouvez modifier le code ci-dessous sur votre testament

JTextField field = new JTextField(); 

field.addActionListener(new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent e) { 
       booleanVar = true; 
      } 
     }); 
+2

OP veut du code pour SWT, pas Swing/AWT. – Baz

+0

Désolé ma mauvaise, s'est confuse –