(IntelliJ GUI 设计器)将组件添加到 JPanel 时出现运行时 NullPointerException
(IntelliJ GUI Designer) Runtime NullPointerException upon adding a component to a JPanel
正在开发一个 IntelliJ 插件并尝试在 JButton
上单击将 JLabel
组件添加到 JPanel
,这是我的代码片段。
addLabelButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
contentPane.add(new JLabel("Hi, JLabel!"));
contentPane.revalidate();
contentPane.repaint();
}
});
点击 JButton
我收到 运行 时间错误。
2020-01-02 17:44:16,118 [ 30502] ERROR -
llij.ide.plugins.PluginManager - null java.lang.NullPointerException
at
com.intellij.uiDesigner.core.GridLayoutManager.addLayoutComponent(GridLayoutManager.java:134)
at java.desktop/java.awt.Container.addImpl(Container.java:1152) at
java.desktop/java.awt.Container.add(Container.java:436)
经过大量研究,我明白了。问题是如果 JPanel
的 Layout Manager 等于 GridLayoutManager (IntelliJ),则无法将组件添加到 JPanel
.
如果您遇到同样的问题:
- 转到 GUI 设计器
- Select
JPanel
你想给它添加一个组件
- 在属性面板中,将 Layout Manager 更改为 GridLayoutManager (IntelliJ) 或 FormLayout (JGoodies )
IntelliJ GUI Designer 属性面板
或以编程方式
contentPane.setLayout(new BoxLayout());
正在开发一个 IntelliJ 插件并尝试在 JButton
上单击将 JLabel
组件添加到 JPanel
,这是我的代码片段。
addLabelButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
contentPane.add(new JLabel("Hi, JLabel!"));
contentPane.revalidate();
contentPane.repaint();
}
});
点击 JButton
我收到 运行 时间错误。
2020-01-02 17:44:16,118 [ 30502] ERROR - llij.ide.plugins.PluginManager - null java.lang.NullPointerException at com.intellij.uiDesigner.core.GridLayoutManager.addLayoutComponent(GridLayoutManager.java:134) at java.desktop/java.awt.Container.addImpl(Container.java:1152) at java.desktop/java.awt.Container.add(Container.java:436)
经过大量研究,我明白了。问题是如果 JPanel
的 Layout Manager 等于 GridLayoutManager (IntelliJ),则无法将组件添加到 JPanel
.
如果您遇到同样的问题:
- 转到 GUI 设计器
- Select
JPanel
你想给它添加一个组件 - 在属性面板中,将 Layout Manager 更改为 GridLayoutManager (IntelliJ) 或 FormLayout (JGoodies )
IntelliJ GUI Designer 属性面板
或以编程方式
contentPane.setLayout(new BoxLayout());