hyperlinkUpdate() дает мне исключение NullPointerException каждый раз, когда я нажимаю гиперссылку в JEditorPane?

Я просто хочу добавить, что исходный загруженный файл представляет собой javadoc с именами всех классов, я хочу, чтобы он отображал соответствующую страницу для каждого класса, когда я нажимаю на гиперссылку с его именем, когда я печатал в консоли Я не видел никаких проблем со сбором соответствующего URL-адреса, однако я получаю исключение 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();
   }
 }

person ribarcheto94    schedule 04.06.2012    source источник
comment
Пожалуйста, используйте последовательный и логичный отступ для блоков кода.   -  person Andrew Thompson    schedule 05.06.2012


Ответы (1)


Но где вы берете это NullPointerException?

Я запускаю код вашего примера и получаю NullPointerException:

htmlPane.setPage(event.getURL());

поэтому поле htmlPage было null.

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

this.htmlPane = htmlPane;

in:

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/»)

person Xeon    schedule 04.06.2012