TheDoctorHax
TheDoctorHax

Reputation: 21

java.awt.AWTERROR When Creating a BoxLayout

I am trying to make a boxlayout filled with a Jlabel and 3 radio buttons in descending order. The program compiles fine but then errors out with the error BoxLayout cant be shared. I have seen people saying this error is because they are trying to attach it to a jframe, but in this case it is the jpanel being given the layout not a frame. This is the segment of code that compiles the window.

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();

Upvotes: 0

Views: 51

Answers (1)

Hovercraft Full Of Eels
Hovercraft Full Of Eels

Reputation: 285405

// xxxxxxxxxxxxx                         xxxxxxxxx
   effortButtons.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));

You have to pass into the BoxLayout constructor the component that is getting the layout. So this should be:

effortButtons.setLayout(new BoxLayout(efforButtons, BoxLayout.Y_AXIS));

Likewise for our other JPanel -- change it to:

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

Per the BoxLayout API:

public BoxLayout(Container target, int axis)
target - the container that needs to be laid out

Upvotes: 3

Related Questions