Java 程序中的空指针异常

Java 程序中的空指针异常,java,nullpointerexception,Java,Nullpointerexception,下面的代码并没有编译失败,但在运行时,它在第20行和第41行显示java.lang.NullPointerException。我也有点好奇,想知道什么是空指针异常,运行时会发生什么 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Tool { private JToolBar toolbar1; private JToolBar toolbar2;

下面的代码并没有编译失败,但在运行时,它在第20行和第41行显示java.lang.NullPointerException。我也有点好奇,想知道什么是空指针异常,运行时会发生什么

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


public class Tool 
    {
     private JToolBar toolbar1;
     private JToolBar toolbar2;
     private JPanel panel;
     public Tool()
        {
         JFrame frame= new JFrame();
         panel = new JPanel();
         panel.setLayout(new BoxLayout(panel,BoxLayout.Y_AXIS));
         JButton one = new JButton("one");
         JButton two = new JButton("two");
         JButton three = new JButton("three");
         JButton four = new JButton("four");
             toolbar1 = new JToolBar();
             toolbar2 = new JToolBar();
         toolbar1.add(one);
         toolbar1.add(two);
         toolbar2.add(three);
         toolbar2.add(four);
         toolbar1.setAlignmentX(0);
         toolbar2.setAlignmentX(0);
         panel.add(toolbar1);
         panel.add(toolbar2);
         frame.add(panel,BorderLayout.NORTH);

         frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
         frame.setSize(400,300);
         frame.setTitle("ZOOP");
         frame.setVisible(true);
        }




        public static void main (String args[])
        {
         Tool zoop = new Tool();
        }


    }
初始化工具栏

 private JToolBar toolbar1;
 private JToolBar toolbar2;
在创建工具栏之前,您尝试将按钮添加到工具栏中。最简单的解决方案:

 private JToolBar toolbar1 = new JToolBar();
 private JToolBar toolbar2 = new JToolBar();
您实际上尚未分配toolbar1或toolbar2。您需要执行以下操作:

toolbar1 = new JToolBar ();
toolbar2 = new JToolBar ("other toolbar");
就像你做的那样:

JButton one = new JButton("one");
你得到异常的原因是因为你试图去引用它,但是那里什么都没有

有关JToolBar文档,请参阅。

您正在通过以下方法传递null

     panel.add(toolbar1);
     panel.add(toolbar2);
这是因为以下内容尚未初始化

 private JToolBar toolbar1;
 private JToolBar toolbar2;
NullPointerException的定义

当应用程序试图 在对象为空的情况下使用null 必修的。这些措施包括:

调用空对象的实例方法。 访问或修改空对象的字段。 将null的长度视为数组。 像数组一样访问或修改null的插槽。 将null作为可丢弃的值抛出。 初始化它

 JToolBar toolbar1 = new JToolBar(SwingConstants.HORIZONTAL);
 JToolBar toolbar2 = new JToolBar(SwingConstants.VERTICAL);

您永远不应该捕获NullPointerException,您应该始终编写程序,使其不会发生。
对精英先生提到的条件应用必要的空检查:

+这里有数百个问题。好的,我更新了程序,但是为什么我的工具栏是可固定的,我如何禁用该功能也请告诉我一些常用的JToolBar构造函数