如何处理java applet中的空指针异常?

时间:2014-04-03 07:13:24

标签: java nullpointerexception applet awt cardlayout

我在我的机器上运行一个简单的applet。注意当applet尝试运行时,执行applet时出现“Null pointer exception”错误。以下代码显示

import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import java.math.*;

<applet code="s09_04" width=300 height=50>
</applet>

public class s09_04 extends Applet
{

  CardLayout c1;
  Panel p;
  Label l1;
  Label l2;
  Label l3;
  Label l4;
  TextField t1;
  TextField t2;
  TextField t3;
  TextField t4;

  public void start()
  {

  }

  public void init()
  {
    c1 = new CardLayout();
    l1 = new Label("Enter Name :");
    l2 = new Label("Enter Place :");
    l3 = new Label("Address :");
    l4 = new Label("Pin :670571 ");
    t1 = new TextField(20);
    p = new Panel();
    p.setLayout(c1);
    add(l1);
    add(t1);
    add(l2);
    add(t2);
    add(l3);
    add(t3);
    add(l4);
    add(t4);
  }

  public void paint(Graphics g)
  {

  }
}

使用的命令是

javac s09_04.java

appletviewer s09_04.java。

终端输出:

java.lang.NullPointerException
    at java.awt.Container.addImpl(Container.java:1037)
    at java.awt.Container.add(Container.java:373)
    at s09_04.init(s09_04.java:32)
    at java.lang.Thread.run(Thread.java:701)

我的问题是applet无法启动的最可能原因是什么?什么时候发生空指针异常?导致空指针异常的原因是什么?我应该在代码中更改什么以便代码运行顺利,没有任何错误。代码中的任何建议/更改都会受到赞赏。我在linux中运行此代码.thanks ...

4 个答案:

答案 0 :(得分:0)

因为TextField t2, t3 and t4;未初始化。

解决
t2=new TextField(20);
t3=new TextField(20);
t4=new TextField(20);

喜欢t1

答案 1 :(得分:0)

最有可能的原因是applet无法启动?

Applet的{​​{3}}表示要向Container添加一个应该初始化的组件。

此处,在代码中,t2, t3, t4未初始化,抛出NullPointerException

何时发生空指针异常???

这是一个非常大的话题,只需一行,

当您尝试访问未初始化的对象时,它会抛出NPE(参见示例)

Object o = null;
// o is not initialised.
o.wait();

我应该在代码中更改什么,以便代码顺利运行而不会出现任何错误

初始化您尝试添加到Applet的所有组件。

t2=new TextField(20);
t3=new TextField(20);
t4=new TextField(20);

答案 2 :(得分:0)

您声明了TextField TextField t2;TextField t3;TextField t4;,但未在init()初始化t2,t3,t4初始化。您正在添加add(t2);add(t3);add(t4); //Here The Exception

         t2=new TextField(20);
         t3=new TextField(20);
         t3=new TextField(20);

答案 3 :(得分:0)

但是如果你没有初始化文本字段意味着没有给它任何空间它怎么可以存储数据?

所以试试这个。

t2=new TextField(size);
t3=new TextField(size);
t3=new TextField(size);

它会有所帮助。