2012-05-20 104 views
0

我从里面有一个空指针有另一个类扩展它。即获得误差(在启动修复空指针错误

private Frame frame; 

public Launcher(Frame frame, int id) { 
    this.frame = frame; 

线:类扩展它具有super行,此行是导致它被设置为空...

类与空错误(发射器) ):

frame.ThreeD(); //THIS IS LINE 77 

在帧类

public void ThreeDLauncher() {  
    new Launcher(this, 0); 
} 

这里是创建空另一个类:

public class Options extends Launcher { 

public Options() { 
    super(null, 1); 
} 

,所以我需要重新安排它,所以它不再创建这个空,但它不会让我有什么呢?它也不能改变Launcher类中设置的内容。

我该如何解决这个问题?

UPDATE 这是详细的错误:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException 
    at ThreeD.Launcher$1.actionPerformed(Launcher.java:77) 
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028) 
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351) 
    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:6373) 
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3267) 
    at java.awt.Component.processEvent(Component.java:6138) 
    at java.awt.Container.processEvent(Container.java:2085) 
    at java.awt.Component.dispatchEventImpl(Component.java:4735) 
    at java.awt.Container.dispatchEventImpl(Container.java:2143) 
    at java.awt.Component.dispatchEvent(Component.java:4565) 
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4621) 
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4282) 
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4212) 
    at java.awt.Container.dispatchEventImpl(Container.java:2129) 
    at java.awt.Window.dispatchEventImpl(Window.java:2478) 
    at java.awt.Component.dispatchEvent(Component.java:4565) 
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:679) 
    at java.awt.EventQueue.access$000(EventQueue.java:85) 
    at java.awt.EventQueue$1.run(EventQueue.java:638) 
    at java.awt.EventQueue$1.run(EventQueue.java:636) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) 
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98) 
    at java.awt.EventQueue$2.run(EventQueue.java:652) 
    at java.awt.EventQueue$2.run(EventQueue.java:650) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) 
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:649) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188) 
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) 
+1

什么是你的'NullPointerException'的完整堆栈跟踪? – Jeffrey

+0

对于某些问题,代码片段不足以提供有效的判断调用。好像这就是这种情况,请提供完整的代码,正如@Jeffrey所述,堆栈跟踪:-)你的'发射器类的77号线在哪里? –

+0

我刚更新了它 – core16

回答

0

它看起来像一个非空Frame是必不可少的。因此,类构造函数需要提供一个框架。也许是这样的:

public class Options extends Launcher { 
    public Options(Frame frame) { 
     super(frame, 1); 
    } 
    ... 
+0

我试过,但是我仍然得到一个空 – core16

+0

当你调用'Options'构造函数......当然你必须提供一个非空的'Frame'参数。 –

0

启动需要另一个构造不需要帧传入

Public Launcher(int id) { 
    this.frame = new Frame(); 
    this.id = id; 
} 

这也许就是空是来自。