2009-07-31 11 views
0

J'essaie de créer une classe simple pour ouvrir une URL mais quand je l'exécute, elle donne une exception de pointeur nul dès que j'initialise l'applet. Voici la classe:Ouvrir une URL dans une nouvelle fenêtre Java

package com.agentsheets.component; 

import java.net.*; 
import java.applet.*; 

public class URLOpener extends Applet{ 

    public void openURL(String inputURL) { 
     try {    
      AppletContext applet = getAppletContext();  
      URL url = new URL(inputURL);  
      applet.showDocument(url, "Ristretto");  
     } 

     catch (MalformedURLException e){ 
      System.out.println(e.getMessage()); 
     } 
    } 
} 

Et je l'appelle comme ceci:

URLOpener opener = new URLOpener(); 
String URL = "http://somewebsite"; 
opener.openURL(URL); 

Il donne l'exception à la ligne AppletContext applet = getAppletContext();

Quelqu'un peut-il expliquer ce que je fais mal? Merci.

Édition: Voici la pile complète.

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at java.applet.Applet.getAppletContext(Unknown Source) at com.agentsheets.component.URLOpener.openURL(URLOpener.java:21) at com.agentsheets.component.ComponentController.actionPerformed(ComponentController.java:2510) at javax.swing.JComboBox.fireActionEvent(Unknown Source) at javax.swing.JComboBox.setSelectedItem(Unknown Source) at javax.swing.JComboBox.setSelectedIndex(Unknown Source) at javax.swing.plaf.basic.BasicComboPopup$Handler.mouseReleased(Unknown Source) at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at javax.swing.plaf.basic.BasicComboPopup$1.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source)

+2

Pourriez-vous publier l'exception pilePace? – akarnokd

Répondre

1

Puisque vous ne publiez pas le stacktrace je suppose:

Vous utilisez cette classe comme une application Java autonome et donc, il n'y a pas de contexte de l'applet défini.

Ai-je deviné raison?

0

Utilisez la classe Desktop.

Desktop.getDesktop(). Browse (nouvelle URL ("http://google.com") .toURI());

Vous ne pouvez pas utiliser les applets en dehors d'un navigateur.

+0

Je l'avais essayé à l'origine mais j'ai reçu une erreur "Exception dans le thread" AWT-EventQueue-0 "java.lang.NoClassDefFoundError: java/awt/Desktop" et un avertissement disant que java.awt.Desktop n'est jamais utilisé. – Mike2012

Questions connexes