组件必须不为null - Java SWING

时间:2012-10-04 13:24:36

标签: java eclipse swing user-interface layout

我正在使用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)

为什么?

我宣布你的答案!!!

3 个答案:

答案 0 :(得分:4)

您要添加的其中一个组件为null,换句话说,就是其中一个变量:

  • tableG
  • B3
  • B4
  • B5
  • B6

并且罪魁祸首在你班级的第97行,详见堆栈追踪。

答案 1 :(得分:2)

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

答案 2 :(得分:1)

  • JTable放入JScrollPaneBorderLayout.CENTER

  • 使用JPanel创建另一个GridLayout并在其中放置4.按钮,更改左侧的1st JButton setVisible(false)BorderLayout.SOUTH)< / p>

  • JPanels拖到JTabbedPanes Tab