2010-12-04 33 views
-2

Je vais avoir un NullPointerException dans un JTextField.getText() dans un actionPerformed événement:NullPointerException dans un JTextField.getText() à l'intérieur d'un événement actionPerformed

import javax.swing.*; 

public class myForm extends JInternalFrame 
{ 
    private JTextField txtName; 
    private String name; 

    public myForm() 
    { 
     super("My Form", true, true, true, true); 

     txtName = new JTextField(); 

     JButton button = new JButton("button"); 

     button.addActionListener(new ActionListener() 
     { 
      public void actionPerformed(ActionEvent e) 
      { 
       name = txtName.getText(); // here is the NullPointerException 
      } 
     } 
    } 
} 

Voici la pile trace:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException 
    at ContatoFormulario$1.actionPerformed(ContatoFormulario.java:80) 
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) 
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) 
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) 
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) 
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) 
    at java.awt.Component.processMouseEvent(Component.java:6216) 
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3265) 
    at java.awt.Component.processEvent(Component.java:5981) 
    at java.awt.Container.processEvent(Container.java:2041) 
    at java.awt.Component.dispatchEventImpl(Component.java:4583) 
    at java.awt.Container.dispatchEventImpl(Container.java:2099) 
    at java.awt.Component.dispatchEvent(Component.java:4413) 
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4556) 
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4220) 
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4150) 
    at java.awt.Container.dispatchEventImpl(Container.java:2085) 
    at java.awt.Window.dispatchEventImpl(Window.java:2475) 
    at java.awt.Component.dispatchEvent(Component.java:4413) 
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) 
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) 

Quelqu'un a une idée? J'essaie déjà de faire des recherches sur le web et je ne trouve aucune solution.

Ce problème se produit plus fréquemment quand nous re-instancier JTextField comme ceci:

public class myForm extends JInternalFrame 
{ 
    private JTextField txtName; 

    public myForm() 
    { 
     JTextField txtName = new JTextField();   
    } 
} 

Mais ce n'est pas le cas, une idée?

+2

Votre premier exemple est incompilable, car vous avez une syntaxe non valide pour la méthode addActionListener() et vous n'ajoutez jamais le bouton au cadre, donc il ne devrait jamais déclencher un ActionEvent. Nous aurons besoin de voir le code actuel pour vous aider. –

Répondre

2

Le premier morceau de code ne devrait pas. Avez-vous retiré quelque chose, ou avez-vous confondu ce que vous avez compilé?

La deuxième partie du code a la variable locale masquant le champ.

+1

Je suis d'accord. Le bug n'est pas dans le code que vous nous montrez. –

+1

Oui, je l'ai trouvé, l'erreur n'est pas sur txtName.getText(). Oui j'ai donné du code, mais juste pour simplifier le post. La ligne de code d'origine est: contact.setName (txtName.getText()); J'ai oublié d'instancier l'objet 'contact'. Merci les gars. –

+0

Il est préférable de faire un peu de débogage avant de poster une question, de sorte que vous postez le problème réel et pas un hareng. –