2012-06-04 3 views
1

Я просто хочу добавить, что исходный загруженный файл представляет собой javadoc, который имеет имена всех классов, я хочу, чтобы он отображал соответствующую страницу для каждого класса, когда я нажимаю на гиперссылку с ее именем, когда я печатал в в консоли я не видел проблем с сбором соответствующего URL-адреса, однако каждый раз, когда я пытаюсь добавить его в JEditorPane, я получаю исключение NullPointerException.hyperlinkUpdate() дает мне NullPointerException каждый раз, когда я нажимаю гиперссылку в JEditorPane?

Вот моя программа:

import javax.swing.*; 
import javax.swing.event.*; 
import java.awt.*; 
import java.awt.event.*; 
import java.net.*; 
import java.io.*; 

public class Help implements HyperlinkListener 
{ 

    JEditorPane htmlPane; 
     String url = "file:///F:/java%2012/Isp/help%20file%20try/doc%202/allclasses-frame.html"; 
    public void hyperlinkUpdate(HyperlinkEvent event) { 
    if (event.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { 
     try { 

     htmlPane.setPage(event.getURL()); 
     //url.setText(event.getURL().toExternalForm()); 
     //System.out.println(event.getURL().toString()); 

     } 
     catch(IOException ioe) { 
     // System.out.print("err"); 
     // Some warning to user 
     } 
    } 
    } 
    public void frame() 
    { 
     JFrame frame = new JFrame("asdd"); 
    JLabel l = new JLabel("asdsada"); 

    try 
     { 

    JEditorPane htmlPane = new JEditorPane(url); 
    htmlPane.addHyperlinkListener(this); 
     htmlPane.setEditable(false); 
     frame.add(new JScrollPane(htmlPane)); 


     } 
catch(IOException ioe) { 
    System.err.println("Error displaying " + url); 
    } 
frame.setSize(1200,800); 
     frame.setVisible(true); 


    } 

    public static void main(String[] args) 
    { 
    Help h =new Help(); 
    h.frame(); 
    } 
} 
+0

Пожалуйста, используйте последовательный и логический отступ для кодовых блоков. –

ответ

3

Но где вы получаете этот NullPointerException?

Я запустить пример кода, и получил NullPointerException на:

htmlPane.setPage(event.getURL()); 

так htmlPage поле было null.

при добавлении строки:

this.htmlPane = htmlPane; 

в:

public void frame() { 
    JFrame frame = new JFrame("asdd"); 
    JLabel l = new JLabel("asdsada"); 
    try { 
     JEditorPane htmlPane = new JEditorPane(url); 
     this.htmlPane = htmlPane; 

Теперь я могу нажать на любую ссылку (в моем случае в "http://www.google.com/")

+0

Спасибо Работает как шарм !!!! – ribarcheto94