Java 容器上的IllegalArgumentException.add

Java 容器上的IllegalArgumentException.add,java,awt,Java,Awt,我创建了一个程序,将有4个类+一个摘要,其中将给出颜色、价格、类型和选项。 这些课程都很好,但主要的课程给了我一些问题。从错误读取的方式来看,我似乎在容器或其他东西上添加了一个窗口,但我没有看到/理解我的错误 这是我的主类代码: public class VehiclePanelProgram extends JFrame { VehicleColorPanel vcp = new VehicleColorPanel(); VehicleOptionsPanel vop

我创建了一个程序,将有4个类+一个摘要,其中将给出颜色、价格、类型和选项。
这些课程都很好,但主要的课程给了我一些问题。从错误读取的方式来看,我似乎在容器或其他东西上添加了一个窗口,但我没有看到/理解我的错误

这是我的主类代码:

public class VehiclePanelProgram extends JFrame
{
    VehicleColorPanel    vcp = new VehicleColorPanel();
    VehicleOptionsPanel  vop = new VehicleOptionsPanel(this);
    VehicleTypePanel     vtp = new VehicleTypePanel(this);
    VehiclePricePanel    vpp = new VehiclePricePanel();

    //It will show a summary of data from the other panels
    JPanel summaryPanel = new JPanel();
    JButton summaryButton = new JButton("Summary");

    public VehiclePanelProgram()
    {
        Container canvas = getContentPane();
        canvas.setLayout( new BorderLayout());

        canvas.add(vcp,BorderLayout.CENTER);//Line 23
        canvas.add(vop,BorderLayout.EAST);
        canvas.add(vpp,BorderLayout.NORTH);
        canvas.add(vtp,BorderLayout.WEST);

        fixUpSummaryPanel();
        canvas.add(summaryPanel, BorderLayout.SOUTH);
        this.setSize(600, 350);
        this.setTitle(" Vehicle Panel Program ");
        this.show();   
    }//End Program constructor

    public void fixUpSummaryPanel()
    {
        summaryPanel.setLayout( new FlowLayout());
        summaryPanel.add(summaryButton);

        summaryButton.addActionListener(new ActionListener()
        {

            @Override
            public void actionPerformed(ActionEvent ae)
            {

            }//End Action Constructor
        });//End ActionListener
    }//End SummaryPanel Constructor

    public void disableSunroof(){vop.disSunroof();}
    public void enableSunroof(){vop.enSunroof();}
    public void disableConvertible(){vtp.disCon();}
    public void enableConvertible(){vtp.enCon();}

    public static void main(String args[]) 
    {
        VehiclePanelProgram app = new VehiclePanelProgram();//Line 58
        app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    }//End Main

}//End VehiclePanelProgram
这是我一直得到的结果:

Exception in thread "main" java.lang.IllegalArgumentException: adding a window to a container
    at java.awt.Container.checkNotAWindow(Container.java:488)
    at java.awt.Container.addImpl(Container.java:1089)
    at java.awt.Container.add(Container.java:971)
    at vehiclepanelprogram.VehiclePanelProgram.<init>(VehiclePanelProgram.java:23)
    at vehiclepanelprogram.VehiclePanelProgram.main(VehiclePanelProgram.java:58)
线程“main”java.lang.IllegalArgumentException中的异常:向容器添加窗口 在java.awt.Container.checkNotAWindow(Container.java:488) 位于java.awt.Container.addImpl(Container.java:1089) 在java.awt.Container.add处(Container.java:971) 在车载程序中。车载程序。(车载程序。java:23) 在vehiclepanelprogram.vehiclepanelprogram.main(vehiclepanelprogram.java:58)
如果需要,我可以为您提供我的其他类。

问题是您的类是从Window继承的,它是一个顶级容器,但您正试图将其添加到另一个顶级容器(canvas)。你不允许这样做。

车辆颜色面板的定义在哪里?@ScaryWombat我不得不完全重做我的代码,当我做了所有的工作。谢谢你,也许可以删除这个问题。好吧,我想我换了一些东西,我让它工作了。非常感谢。