带有Applet的java.lang.InstantiationException

时间:2012-10-01 20:30:15

标签: java exception applet

此程序应显示1个普通按钮(a)和3个单选按钮(x,z,y)。当用户选择一个单选按钮并按下按钮a时,它应该将他重定向到一个网站。问题出在发布期间。窗口是空的,在左下角有一条消息“开始:小程序未初始化”。另外,我在控制台中得到“java.lang.InstantiationException”。

我会感激任何帮助。

package nome.nonoriginale;

import java.awt.Button;
import java.awt.Checkbox;
import java.awt.event.ActionListener;
import java.net.MalformedURLException;
import java.net.URL;

import javax.swing.JApplet;

import com.sun.corba.se.spi.orbutil.fsm.Action;

public abstract class Linkers extends JApplet implements ActionListener
{
Button a = new Button("Go to");

URL libro1;
URL libro2;
URL libro3;

Checkbox x;
Checkbox z;
Checkbox y;

public void init()
{
    try
    {
        libro1 = new URL("http://www.reddit.com/");
        libro2 = new URL("http://www.youtube.com/");
        libro3 = new URL("http://www.ismatteirecanati.it/default.aspx?pag=0&lang=it");
    }
    catch(MalformedURLException e)
    {
        System.out.println("Link's broken, brah");
    }
    add(a);
    add(x);
    add(z);
    add(y);

    a.addActionListener(this);
}

public void ActionPerformed(Action e)
{   
    if(x.getState() == true)
        getAppletContext().showDocument(libro1);

    else if(y.getState() == true)
        getAppletContext().showDocument(libro2);

    else if(z.getState() == true)
        getAppletContext().showDocument(libro3);
}

}

1 个答案:

答案 0 :(得分:1)

无法实例化类,因为它已声明为abstract。您需要从类声明中删除abstract关键字:

public class Linkers extends JApplet implements ActionListener

除此之外,您可以通过实施:

来实施ActionListener
public void actionPerformed(ActionEvent e) {

看起来您错误地导入了CORBA Action类。

完成这些更改后,您将获得NullPointerException,因为您的复选框未实例化。

不要将AWT与Swing组件混合 - AWT是重量级的,会对Swing组件的绘制产生负面影响

所以你可以使用:

JCheckBox x = new JCheckBox();