java - 将面板布局设置为 null 时出现 NullPointerException?

标签 java swing jframe

我正在尝试创建一个布局为空的 GUI,以便我可以轻松地创建和删除具有像素尺寸的图像,但是当我尝试这样做时收到 NullPointerException。

根据 https://docs.oracle.com/javase/tutorial/uiswing/layout/none.html ,只需将布局设置为 null 就足够了,但是当我这样做时,我会收到 NullPointerException。

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import java.awt.Component;
import java.awt.Color;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.image.*;
import java.util.*;

public class DriverClass extends JFrame {
  /*
   * The frame to contain all GUI.
   */
  public JFrame frame;
  /*
   * The Panel to contain all GUI.
   */
  public JPanel panel;
  /*
   * Class constructor
   */
  public DriverClass () {
   setSize(400,400);
   JPanel panel = new JPanel();
   panel.setSize(400,400);
   panel.setLayout(null); //NullPointerException occurs here
   add(panel);
   setVisible(true);
   panel.setVisible(true);
   frame.pack();
  }
  /*
   * The main method that runs the example class
   */
  public static void main (String[] args) {

    DriverClass driver = new DriverClass();

  }
}

我期望的是一个简单的工作 JFrame,我可以将图像添加到(通过另一个类)但是我却被阻止执行第一步。错误如下:

    at TextDriverClass.<init>(TextDriverClass.java:40)
    at TextDriverClass.main(TextDriverClass.java:47)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at edu.rice.cs.drjava.model.compiler.JavacCompiler.runCommand(JavacCompiler.java:267)

第一个错误行指向的行在代码的注释中指出。请注意,除了 JPanel 之外,我还没有创建任何组件或子组件,因此我不必担心使用 setbounds() 或 repaint()。

最佳答案

错误不在您指定的行中;但在:

frame.pack()

frame 字段为 null,这就是给您 NPE 的原因。我认为你的意思是调用:

this.pack()

因为您的 DriverClass 已经扩展了 JFrame。在这种情况下,您真的不需要 public JFrame frame 字段。

关于java - 将面板布局设置为 null 时出现 NullPointerException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56266432/

相关文章:

java - 如何在 Crafter CMS 中设置站点?

Java 继承检查多个变量的值

java - Netbeans Swing 图形用户界面

java - 获取 JTree 上单击节点的基础节点数据?

java - 如何在 JFrame 中创建视口(viewport)?

java - KeyListener 不工作(requestFocus 没有修复它)

java - 查看窗口是否失去焦点

java.lang.RuntimeException : java. lang.ClassCastException : [B cannot be cast to java. lang.String

java - 通过扩展 BaseActivites 来划分职责是不好的做法吗?

java - 如果我不使用 SwingUtilities.invokeLater 怎么办?