Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何修复NullPointerException错误?_Java_Swing_Nullpointerexception - Fatal编程技术网

Java 如何修复NullPointerException错误?

Java 如何修复NullPointerException错误?,java,swing,nullpointerexception,Java,Swing,Nullpointerexception,当我运行我的简单Java浏览器时,我尝试访问一个网页,如,它从我的try-catch代码中返回NullPointerException错误,我该如何解决这个问题 框架类别: public class Frame extends JFrame { public EditorPane pane; public URLBar urlbar; public static void main(String[] args) throws Exception { Frame frame = ne

当我运行我的简单Java浏览器时,我尝试访问一个网页,如,它从我的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);
    }
}

}
二苯醚类:

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());
                    }
                }
            }
    );

}

}

看起来您忘了初始化URLBar构造函数中的窗格成员,这意味着您调用loadContent时它为null

这里有一个解决方案:

public URLBar(String text, EditorPane pane) {

    super(text);

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

包含堆栈跟踪的完整错误消息是什么?如果您在解决NullPointerException NPE时做了一点搜索,您就会知道我们需要的最重要的信息是异常的相关堆栈跟踪和导致异常的行的一些标识,stacktrace会告诉您,不幸的是,你都没有把你的问题贴在这里。请修复此问题,以便我们能够帮助您。最重要的是,您需要学习如何调试NPE NullPointerException的一般概念。您应该仔细阅读异常的stacktrace,找到出错的代码行,即引发异常的代码行,然后仔细检查该行,找出哪个变量为null,然后回溯到代码中以了解原因。相信我,你会一次又一次地遇到这些问题。这是堆栈跟踪:java.lang.NullPointerException位于URLBar.loadContentURLBar.java:29位于URLBar$1.actionPerformedURLBar.java:20不好,仍然会给我一个NullPointerException@WilliamRose再次强调,我们需要看到完整的错误。我明白了:出现了一个异常!类型:java.lang.NullPointerExceptionStack跟踪:java.lang.NullPointerException位于URLBar.loadContentURLBar.java:29位于URLBar$1.actionPerformedURLBar.java:20行29为pane.setPageuserInput;