2012-10-01 70 views
0

該程序應顯示1個正常按鈕(a)和3個單選按鈕(x,z,y)。當用戶選擇一個單選按鈕並按下按鈕a時,它應該將他重定向到一個網站。問題在於發佈期間。窗口是空的,在左下角有一條消息,說「開始:Applet未初始化」。另外,我在控制檯中得到「java.lang.InstantiationException」。帶小程序的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

一目瞭然,如果'(x.getState()==真){...}'應該是'如果(x.getState()) {...}'。不是強制性的,但它更好。 – Lion

回答

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(); 
+0

這段代碼沒有錯誤,但現在當我嘗試運行Applet時,它給了我NullPointerException和相同的消息。 –

+0

你還沒有實例化你的複選框。查看更新。 – Reimeus

+0

它的工作原理。非常感謝您的幫助!現在我要睡一覺了。晚安! –

相關問題