Java 程序中的空指针异常
下面的代码并没有编译失败,但在运行时,它在第20行和第41行显示java.lang.NullPointerException。我也有点好奇,想知道什么是空指针异常,运行时会发生什么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;
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构造函数