创建BoxLayout时的java.awt.awt错误

创建BoxLayout时的java.awt.awt错误,java,swing,awt,layout-manager,boxlayout,Java,Swing,Awt,Layout Manager,Boxlayout,我正在尝试制作一个包含一个Jlabel和3个单选按钮的boxlayout,按降序排列。该程序编译良好,但随后出错,错误框布局无法共享。我见过有人说这个错误是因为他们试图将它附加到jframe上,但在这种情况下,给jpanel的是布局而不是框架。这是编译窗口的代码段 JPanel mainPanel = new JPanel(); mainPanel.setLayout(new BorderLayout()); JPanel effortButtons = new JPanel()

我正在尝试制作一个包含一个Jlabel和3个单选按钮的boxlayout,按降序排列。该程序编译良好,但随后出错,错误框布局无法共享。我见过有人说这个错误是因为他们试图将它附加到jframe上,但在这种情况下,给jpanel的是布局而不是框架。这是编译窗口的代码段

JPanel mainPanel = new JPanel();
    mainPanel.setLayout(new BorderLayout());
    JPanel effortButtons = new JPanel();
    JPanel skillButtons = new JPanel();
    effortButtons.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));
    skillButtons.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));
    effortButtons.add(effortHeader);//this is what gives the error
    effortButtons.add(oneEffort);
    effortButtons.add(twoEffort);
    effortButtons.add(threeEffort);
    skillButtons.add(skillHeader);
    skillButtons.add(oneSkill);
    skillButtons.add(twoSkill);
    skillButtons.add(threeSkill);
    mainPanel.add(effortButtons, BorderLayout.WEST);
    mainPanel.add(skillButtons, BorderLayout.EAST);
    mainPanel.add(studentName, BorderLayout.NORTH);
    mainPanel.add(next, BorderLayout.SOUTH);
    add(mainPanel);
    pack();
您必须将获取布局的组件传递给BoxLayout构造函数。所以这应该是:

effortButtons.setLayout(new BoxLayout(efforButtons, BoxLayout.Y_AXIS));
同样,对于我们的另一个JPanel,将其更改为:

skillButtons.setLayout(new BoxLayout(skillButtons, BoxLayout.Y_AXIS));

根据:

public-BoxLayout(容器目标,int轴)

目标-需要布置的容器

您必须将获取布局的组件传递给BoxLayout构造函数。所以这应该是:

effortButtons.setLayout(new BoxLayout(efforButtons, BoxLayout.Y_AXIS));
同样,对于我们的另一个JPanel,将其更改为:

skillButtons.setLayout(new BoxLayout(skillButtons, BoxLayout.Y_AXIS));

根据:

public-BoxLayout(容器目标,int轴)

目标-需要布置的容器


哦,真的,我的印象是第一个选择是我想链接到的面板。boxlayout需要能够放置在使用borderlayout的主面板上。这还会存在吗?@TheDoctorHax:定义“我想链接到的”因为它没有任何意义。BoxLayout需要对接收布局的组件的引用。试试看。@TheDectorHax:请参见编辑答案。API特别告诉您,参数应该是需要布局的容器。谢谢,这很有效,但现在窗口中没有显示任何内容。我确保添加了(主面板),但仍然没有任何内容。@TheDoctorHax:考虑到当前发布的代码,我不知道。创建并发布你的,让我们看看你的问题在哪里。哦,真的,我的印象是第一个选项是我想链接到的面板。boxlayout需要能够放置在使用borderlayout的主面板上。这还会存在吗?@TheDoctorHax:定义“我想链接到的”因为它没有任何意义。BoxLayout需要对接收布局的组件的引用。试试看。@TheDectorHax:请参见编辑答案。API特别告诉您,参数应该是需要布局的容器。谢谢,这很有效,但现在窗口中没有显示任何内容。我确保添加了(主面板),但仍然没有任何内容。@TheDoctorHax:考虑到当前发布的代码,我不知道。创建并发布您的,让我们看看您的问题所在。可能重复的可能重复的