3

我正在尝试intellij,并正在尝试进行一些摇摆开发。我遇到了一个我从未在 Eclipse 上遇到过的问题,我想知道我是否设置了错误。

这是我的驱动程序运行的 GUI 类:

package view;

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

public class View {

private JPanel panel;

public void run() {
    JFrame frame = new JFrame("Vending Machine");
    frame.setContentPane(new View().panel);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.pack();
    frame.setVisible(true);
}

{
// GUI initializer generated by IntelliJ IDEA GUI Designer
// >>> IMPORTANT!! <<<
// DO NOT EDIT OR ADD ANY CODE HERE!
    $$$setupUI$$$();
}

/**
 * Method generated by IntelliJ IDEA GUI Designer
 * >>> IMPORTANT!! <<<
 * DO NOT edit this method OR call it in your code!
 *
 * @noinspection ALL
 */
private void $$$setupUI$$$() {
    final JPanel panel1 = new JPanel();
    panel1.setLayout(new GridBagLayout());
}

}

据我所知,我的 run() 方法非常简单。但是,在编译时,这是我收到的错误:

Exception in thread "main" java.awt.IllegalComponentStateException: contentPane cannot be set to null.
at javax.swing.JRootPane.setContentPane(JRootPane.java:621)
at javax.swing.JFrame.setContentPane(JFrame.java:698)
at view.View.run(View.java:13)
at model.VendingMachine.<init>(VendingMachine.java:14)
at controller.Driver.main(Driver.java:14)

无论出于何种原因,intellij 自动创建的代码没有正确初始化 JPanel,这就是它为空的原因。

我已经尝试在 run (panel = new JPanel();) 中自己实例化它,但这并没有帮助。

这很明显吗?在 Eclipse 中开始使用 swing 时,我从未遇到过这个问题。

4

3 回答 3

0

尝试在 Intellij IDEA 中启用“UI Designer”插件,这对我有帮助。文件 -> 设置 -> 插件 -> UI Designer -> 重启 IDE

于 2019-10-20T10:26:07.823 回答
0

您需要确保设置面板的字段名称。您可能误解了以下行:

frame.setContentPane(new View().panel);

在这段代码中, new View().panel 实际上是在尝试使用字段名称初始化对象。因此,如果面板没有该名称...显然您正在尝试实例化不存在的东西。

我在 jform 编辑器的字段名称属性下将我的 JPanel MainPanel 命名为:

frame.setContentPane(new View().MainPanel);

于 2021-06-28T00:33:32.237 回答
0

您将面板“panel”设置为 JFrame 的内容窗格,但您正在创建的 JPanel 称为“panel1”。要解决此问题,请将 JPanel 的名称更改为“panel”而不是“panel1”。

于 2018-02-11T21:40:27.650 回答