2010-12-04 7 views
-2

の内側に、私はJTextField.getText(中NullPointerExceptionがを抱えている)内部イベントのactionPerformed:ここのNullPointerException()の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 
      } 
     } 
    } 
} 

はスタックですトレース:

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) 

誰でも知っていますか?私はすでにウェブ上を検索しようとしており、何の解決策も見つけられません。

私たちは、このようにJTextFieldのを、インスタンス化し直すと、この問題は、より多くの頻度で発生します。

public class myForm extends JInternalFrame 
{ 
    private JTextField txtName; 

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

しかし、これはそうではない、任意のアイデア?

+2

最初の例は、addActionListener()メソッドの構文が無効であり、実際にはボタンをフレームに追加しないため、ActionEventを発生させることはありません。私たちはあなたを助けるための実際のコードを見る必要があります。 –

答えて

2

最初のコードは使用しないでください。あなたは何かを削除しましたか、またはあなたが編集したものを混乱させましたか?

コードの2番目の部分には、フィールドを隠すローカル変数があります。

+1

私は同意します。あなたが私たちに示しているコードにバグはありません。 –

+1

はい、私はそれを見つけました、エラーはtxtName.getText()ではありません。はい、私はいくつかのコードを省略しましたが、ポストを単純化するだけです。 元のコード行は次のとおりです。 contact.setName(txtName.getText()); 「連絡先」オブジェクトをインスタンス化するのを忘れました。 ありがとうございます。 –

+0

質問を投稿する前に少しデバッグを行うのが一番良いので、実際の問題を投稿し、赤ちゃんは投稿しません。 –

関連する問題