Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.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 在添加帧内容时获取空指针异常_Java_Swing_Nullpointerexception - Fatal编程技术网

Java 在添加帧内容时获取空指针异常

Java 在添加帧内容时获取空指针异常,java,swing,nullpointerexception,Java,Swing,Nullpointerexception,在Swing中的JFrame中添加内容时出现空指针异常 public static void createAndShowGUI() { //Create and set up the window. frame = new JFrame("Data Entry Application"); //Set up the content pane. // frame = new JFrame(); addComponentsToPane(frame.ge

在Swing中的
JFrame
中添加内容时出现空指针异常

    public static void createAndShowGUI() {
    //Create and set up the window.
    frame = new JFrame("Data Entry Application");
    //Set up the content pane.
    // frame = new JFrame();
    addComponentsToPane(frame.getContentPane());  // null pointer exception in this line
     }

 public static void addComponentsToPane(Container pane) {
    if (RIGHT_TO_LEFT) {
        pane.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
    }

    Border blackline, raisedetched = null, loweredetched,
            raisedbevel = null, loweredbevel, empty, orangeline, redline, greenline, blueline;
    blackline = BorderFactory.createLineBorder(Color.black);
    orangeline = BorderFactory.createLineBorder(Color.ORANGE);
    redline = BorderFactory.createLineBorder(Color.RED);
    greenline = BorderFactory.createLineBorder(Color.GREEN);
    blueline = BorderFactory.createLineBorder(Color.blue);

    JButton button;
    pane.setLayout(new GridBagLayout());
    GridBagConstraints c = new GridBagConstraints();
    if (shouldFill) {
        //natural height, maximum width
        c.fill = GridBagConstraints.HORIZONTAL;
    }

    /* Header Section start*/
    /* Username and designation starts */
    JPanel p_username = new JPanel();
    p_username.setMinimumSize(new Dimension(140, 30));
    l_username = new JLabel(Login.login_username);
    l_designation = new JLabel("Data Entry User");

    JPanel t9 = new JPanel(new GridLayout(0, 1));
    t9.add(l_username);
    t9.add(l_designation);
    t9.setPreferredSize(new Dimension(140, 30));
    p_username.add(t9);
   c.fill = GridBagConstraints.NORTH;
    c.gridx = 0;
    c.gridy = 0;
    c.ipady = 25;
    c.insets = new Insets(0, 10, 0, 0);
    pane.add(p_username, c);
    /* Username and designation end */
  }

提出一些想法。

我模拟了您的
addComponentsToPane()
方法,向您展示了问题所在:

private static void addComponentsToPane(Container container)
{
    System.out.println("Is container null? " + container == null);
    JPanel panel = null;
    container.add(panel);
}
调用此方法会产生以下输出:

false
Exception in thread "main" java.lang.NullPointerException
    at java.awt.Container.addImpl(Container.java:1091)
    at java.awt.Container.add(Container.java:415)
    at FrameDemo.addComponentsToPane(FrameDemo.java:33)
    at FrameDemo.createAndShowGUI(FrameDemo.java:25)
    at FrameDemo.main(FrameDemo.java:14)
如果您阅读Javadoc,则从结果输出中可以看到,
getContentPane()
方法不会返回null。我的第二行声明了一个JPanel,但没有实例化该对象,然后我尝试将其添加到内容窗格中。在我的例子中,这导致了
NullPointerException


我的结论:您正在向容器添加未正确实例化的组件。事实上,如果您阅读了
Container.add(comp)
方法的Javadoc,它会声明如果
comp
为null,则此方法会抛出
NullPointerException
。检查您试图添加到其中的所有组件,您可以找出其余的组件。

您的
addComponentsToPane
方法代码在哪里?空指针表示您试图使用空的东西。如果不查看addComponentsToPane方法,我们无法知道这是什么。1)请参见&2)始终复制/粘贴错误和异常输出!3) 为了更快地获得更好的帮助,请发布一个(最少完整的可验证示例)。