当我运行简单的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());
}
}
}
);
}
}
答案 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());
}
}
);
}