如何修复NullPointerException错误?

时间:2015-03-29 18:25:30

标签: java swing nullpointerexception

当我运行简单的Java浏览器时,我尝试访问http://google.com之类的网页,并从我的try catch代码返回NullPointerException错误,我该如何修复?

帧类:

public class Frame extends JFrame {

public EditorPane pane;
public URLBar urlbar;

public static void main(String[] args) throws Exception {

    Frame frame = new Frame();

}

public Frame() throws Exception {
    super("Java Browser v1.0");

    JPanel mainPanel = new JPanel(new BorderLayout());
    URLBar addressBar = new URLBar("Enter URL here!", pane);
    EditorPane contentDisplay = new EditorPane(urlbar);

    mainPanel.add(contentDisplay, BorderLayout.CENTER);
    mainPanel.add(addressBar, BorderLayout.NORTH);

    add(mainPanel);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setSize(700, 400);
    add(new JScrollPane(mainPanel));
    setVisible(true);
}

}

URLBar类:

public class URLBar extends JTextField {

public EditorPane pane;

public URLBar(String text, EditorPane pane) {

    super(text);

     addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent event) {
                loadContent(event.getActionCommand());
            }
        }
     );
}

public void loadContent(String userInput) {
    try
    {
        pane.setPage(userInput);
        setText(userInput);
    }
    catch (Exception e)
    {
        System.out.println("A wild exception appeared! Type: " + e);
    }
}

}

EditorPane类:

public class EditorPane extends JEditorPane {

public URLBar urlbar;

public EditorPane(URLBar urlbar) {

    setEditable(false);
    setVisible(true);
    addHyperlinkListener(
            new HyperlinkListener() {
                public void hyperlinkUpdate(HyperlinkEvent event) {
                        if(event.getEventType()==HyperlinkEvent.EventType.ACTIVATED) {
                        urlbar.loadContent(event.getURL().toString());
                    }
                }
            }
    );

}

}

1 个答案:

答案 0 :(得分:0)

您似乎忘记在pane构造函数中初始化URLBar成员,这意味着当您致电loadContent时它为空。

这是一个修复:

public URLBar(String text, EditorPane pane) {

    super(text);

    this.pane = pane; // add this
     addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent event) {
                loadContent(event.getActionCommand());
            }
        }
     );
}