我在使用 IntelliJ 的 java gui 创建时遇到问题。不幸的是,面板背后的大部分代码都隐藏在 gui creator 中,我无法编辑。
我使用 ItelliJ GridLayoutManager 创建了一个空白的 JPanel“questionPanel”。 当我尝试向该面板添加任何内容时,即使面板绝对不为空,我也会收到空指针异常。我还尝试将 JTextField 添加到布局中(出于好奇),但这也无济于事。 JTextField 出现了,但我仍然无法从代码中添加任何内容。
当我将布局管理器更改为其他任何东西(GridBagLayout、FormLayout、BorderLayout 等)时,我不再收到错误,但什么也没有显示。
显示 View .java
private JPanel questionPane;
public void initialize()
{
questionPane.addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
questionPane.add(new JLabel("Test"));
System.out.println("Click event received.");
}
//other overrides hidden
}
有没有人知道幕后发生了什么,或者有什么方法可以让我将组件放到面板上?谢谢。
示例堆栈跟踪(此跟踪不是由与上面相同的代码生成的,但它是相同的错误):
Exception occurred during event dispatching:
java.lang.NullPointerException
at com.intellij.uiDesigner.core.GridLayoutManager.addLayoutComponent(
GridLayoutManager.java:134)
at java.awt.Container.addImpl(Container.java:1074)
at java.awt.Container.add(Container.java:365)
at [MyProject].UI.View.DisplayView$1.actionPerformed(DisplayView.java:91)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
.....
最佳答案
对于使用 IntelliJ 的 GUI 创建器并收到相同错误的任何人,我通过在代码中手动设置面板的布局管理器而不是在 GUI 创建器中选择不同的布局管理器来解决问题。
示例:
questionPane.setLayout(new BoxLayout(questionPane, BoxLayout.PAGE_AXIS));
关于java - IntelliJ gui creator : JPanel gives runtime null pointer exception upon adding any component,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9639017/