【问题标题】:Component must be not null - Java SWING组件不能为空 - Java SWING
【发布时间】:2012-10-04 13:24:36
【问题描述】:

我正在使用 SWING 并使用简单的组布局进行写作

我为布局编写了这段代码:

    JPanel unterPanel = new JPanel();
    GroupLayout layout = new GroupLayout(unterPanel);
    unterPanel.setLayout(layout);
    layout.setAutoCreateGaps(true);
    layout.setAutoCreateContainerGaps(true);

    layout.setHorizontalGroup(
            layout.createSequentialGroup()
            .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                    .addComponent(header)
                    .addComponent(tableG)
                    .addGroup(layout.createSequentialGroup()
                            .addComponent(b3)
                            .addComponent(b4)
                            .addComponent(b5)
                            .addComponent(b6)
                            ))
            );
    layout.setVerticalGroup(
            layout.createSequentialGroup()
            .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                    .addComponent(b3)
                    .addComponent(b4)
                    .addComponent(b5)
                    .addComponent(b6)
                    )   
                    .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                            .addComponent(header)
                            .addComponent(tableG))
            );

    layout.linkSize(SwingConstants.HORIZONTAL, b3, b4, b5, b6);

    return unterPanel;

但是当我编译我得到的代码时:

Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Component must be non-null
    at javax.swing.GroupLayout$ComponentSpring.<init>(GroupLayout.java:2878)
    at javax.swing.GroupLayout$ComponentSpring.<init>(GroupLayout.java:2858)
    at javax.swing.GroupLayout$Group.addComponent(GroupLayout.java:1490)
    at javax.swing.GroupLayout$ParallelGroup.addComponent(GroupLayout.java:2414)
    at javax.swing.GroupLayout$ParallelGroup.addComponent(GroupLayout.java:2384)
    at javax.swing.GroupLayout$Group.addComponent(GroupLayout.java:1471)
    at javax.swing.GroupLayout$ParallelGroup.addComponent(GroupLayout.java:2406)
    at gui.guimain.Produktmaingui(guimain.java:97)
    at gui.guimain.showStart(guimain.java:306)
    at gui.guimain$1.run(guimain.java:410)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

为什么?

感谢你的回答!!!

【问题讨论】:

  • 不,不是因为我没有得到异常;P

标签: java eclipse swing user-interface layout


【解决方案1】:

您要添加的组件之一为 null,换句话说,是以下变量之一:

  • 标题
  • 表G
  • b3
  • b4
  • b5
  • b6

罪魁祸首在您班级的第 97 行,如堆栈跟踪中所述。

【讨论】:

    【解决方案2】:

    转到 gui.guimain.Produktmaingui 中的第 97 行,您在那里调用 addComponent。该参数可能为空。如果参数不为 null,则可能是参数的内容。

    【讨论】:

    • 谢谢你的回答...我纠正了打字错误,现在一切正常!!!
    【解决方案3】:
    • JTable 放入JScrollPane (BorderLayout.CENTER)

    • GridLayout创建另一个JPanel并放4个按钮,在左侧更改为1st JButtonsetVisible(false)BorderLayout.SOUTH

    • 这些拖把JPanels 放到JTabbedPanes Tab

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-21
      • 1970-01-01
      • 2011-11-16
      • 2014-10-17
      • 1970-01-01
      • 2012-09-23
      • 2012-04-18
      相关资源
      最近更新 更多