[swing] verifier si un textField est vide, pourquoi sa marche pas ?

verifier si un textField est vide, pourquoi sa marche pas ? [swing] - Java - Programmation

Marsh Posté le 13-04-2004 à 16:09:48    

:hello:  
 :fou:  
je comprend vraiment pas, ca la l air simple pourtant :
if (nameField.getText()==null) action
action ne se produit jammais :/, meme si je fais
if (nameField.getText()=="foo" )  
 
 

Code :
  1. public class StartGUI implements ActionListener
  2. {
  3. private JTextArea welcomeNote ;
  4. private JButton start ;
  5. private JLabel name;
  6. private JTextField  nameField;
  7. private JPanel mainPanel;
  8. private JPanel upPanel;
  9. private JPanel downPanel;
  10. public StartGUI()
  11. {
  12. //......
  13.  //down panel
  14.  downPanel = new JPanel();
  15.  start = new JButton("start" );
  16.  start.addActionListener(this);
  17.  nameField = new JTextField(15);
  18.  name = new JLabel("<html><i>Name : </i></html>" ) ;
  19.  downPanel.add(name);
  20.  downPanel.add(nameField);
  21.  downPanel.add(start);
  22. //......
  23. }
  24. public void actionPerformed(ActionEvent e)
  25. {
  26.   if (nameField.getText()==null)
  27.   {
  28.    JOptionPane.showMessageDialog(null,"Enter your name !", "Error", JOptionPane.ERROR_MESSAGE);
  29.   }
  30.   else JOptionPane.showMessageDialog(null, nameField.getText(), "Error", JOptionPane.ERROR_MESSAGE);
  31. }
  32. }


Message édité par xiluoc le 13-04-2004 à 16:10:55
Reply

Marsh Posté le 13-04-2004 à 16:09:48   

Reply

Marsh Posté le 13-04-2004 à 16:26:00    

lis la javadoc ;)
 
Pour un String, les == marchent pas...
 
c la méthode .equals() qui marchera...


---------------
Jubi Photos : Flickr - 500px
Reply

Marsh Posté le 13-04-2004 à 16:30:15    

Jubijub a écrit :

lis la javadoc ;)
 
Pour un String, les == marchent pas...
 
c la méthode .equals() qui marchera...


arf je lavais vu dans la liste deroulante d eclipse, et je me suis dit ... hum non c est pour les objets ca.     [:dams86]  

Reply

Marsh Posté le 13-04-2004 à 16:31:39    

rappelle moi ce qu'est un String ?


---------------
Jubi Photos : Flickr - 500px
Reply

Marsh Posté le 13-04-2004 à 16:40:41    

Jubijub a écrit :

rappelle moi ce qu'est un String ?


pas une primitive  :whistle:

Reply

Marsh Posté le 13-04-2004 à 18:30:34    

xiluoc a écrit :

:hello:  
 :fou:  
je comprend vraiment pas, ca la l air simple pourtant :
if (nameField.getText()==null) action
action ne se produit jammais :/, meme si je fais
if (nameField.getText()=="foo" )  
 
 

Code :
  1. if (nameField.getText()==null)




Code :
  1. if (nameField.getText().length() == 0)


C'est mieux.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 13-04-2004 à 19:55:44    

question optimisation : c quoi le moins couteux : checker si la longueur de la chaine est nulle, ou vérifier si elle est égale à "" ?


---------------
Jubi Photos : Flickr - 500px
Reply

Marsh Posté le 13-04-2004 à 20:02:15    

Jubijub a écrit :

question optimisation : c quoi le moins couteux : checker si la longueur de la chaine est nulle, ou vérifier si elle est égale à "" ?

le premier, mais pas de beaucoup. Par contre, les comparaisons inutiles, c'est plus lourd à lire.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 15-04-2004 à 11:13:45    

Quand tu as un objet de type String, tu peux tester s'il est nul ou non avec l'opérateur ==  

Code :
  1. String text = nameField.getText();
  2. if(text == null) { /*faire qqch*/ }
  3. else { /*Faire autre chose*/}


 
pour faire de la comparaison de chaîne il faut utilser les méthode equals() ou equalsIgnoreCase() et la méthode length() pour avoir la longueur.
 
et pour être sur d'avoir une chaîne valide il vaut mieux faire qqch comme ça :
 

Code :
  1. String text = nameField.getText();
  2. if(text != null && text.length()>0)
  3. {
  4. /* là je peux travailler sans risque sur ma chaîne
  5. et appeler des méthodes car objet non nul à coup sur.
  6. */
  7. }


 
Cependant, je ne suis pas sur que nameField.getText() renvoie null si le contrôle est vide. Il se peut qu'il renvoie une chaîne vide, ce qui n'est pas la même chose

Reply

Marsh Posté le 15-04-2004 à 12:05:54    

à mon grand étonnement, getText() peut effectivement renvoyer null dans des cas assez bizzares (de DocumentLocation invalide, mais on prend 0 et length(), donc à moin que length() soit en vrac, il n'y a pas de raison que ça plante). Je viens d'aller voir le code source.
 
Mais c'est loin d'être un cas normal (en particulier, quand le champ est vide, ça renvoit bien une chaine vide). Je pense qu'on peut largement laisser remonter l'éventuelle NPE.


---------------
trainoo.com, c'est fini
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed