Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Adding additional JPanels to a JPanel

Tags:

java

swing

jpanel

Rather basic question here guys.

Basically I have code like this:

public SuperPanel() {
    setLayout(new BorderLayout());
    add(panel1(), BorderLayout.NORTH);
    add(panel2(), BorderLayout.CENTER);
    add(panel3(), BorderLayout.SOUTH);
}

And that all works well and good. The problem is that I have another part I wish to add to the center. Just using add(newPanel(), BorderLayout.CENTER) doesn't work, obviously. But you can add JPanels in JPanels, correct?

So I made the following change:

public SuperPanel() {
    setLayout(new BorderLayout());
    add(panel1(), BorderLayout.NORTH);
    add(supersweetpanel(), BorderLayout.CENTER);
    add(panel3(), BorderLayout.SOUTH);
}

With supersweetpanel() being:

public JPanel supersweetpanel() {
    JPanel sswp = new JPanel();
    setLayout(new BorderLayout());
    add(panel2(), BorderLayout.NORTH);
    return sswp;
}

Now it overrides panel1! If I set it to anything else (CENTER, SOUTH, what have you), the first two panels disappear entirely. Help is much appreciated.

like image 531
Peter C. Avatar asked May 26 '09 22:05

Peter C.


1 Answers

SuperPanel is likely a subclass of JPanel, right? You are accidentally adding panel2 to this (the SuperPanel), not sswp. Try:

public JPanel supersweetpanel() {
        JPanel sswp = new JPanel();
        sswp.setLayout(new BorderLayout());
        sswp.add(panel2(), BorderLayout.NORTH);
        return sswp;
    }
like image 89
Michael Myers Avatar answered Nov 12 '22 11:11

Michael Myers