2012-06-04 33 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