将其他JPanel添加到JPanel

Pet*_* C. 6 java swing jpanel

相当基本的问题在这里.

基本上我有这样的代码:

public SuperPanel() {
    setLayout(new BorderLayout());
    add(panel1(), BorderLayout.NORTH);
    add(panel2(), BorderLayout.CENTER);
    add(panel3(), BorderLayout.SOUTH);
}
Run Code Online (Sandbox Code Playgroud)

这一切都运作良好.问题是我还有另一部分要添加到中心.add(newPanel(), BorderLayout.CENTER)显然,只是使用不起作用.但你可以在JPanels中添加JPanels,对吗?

所以我做了以下改动:

public SuperPanel() {
    setLayout(new BorderLayout());
    add(panel1(), BorderLayout.NORTH);
    add(supersweetpanel(), BorderLayout.CENTER);
    add(panel3(), BorderLayout.SOUTH);
}
Run Code Online (Sandbox Code Playgroud)

随着supersweetpanel():

public JPanel supersweetpanel() {
    JPanel sswp = new JPanel();
    setLayout(new BorderLayout());
    add(panel2(), BorderLayout.NORTH);
    return sswp;
}
Run Code Online (Sandbox Code Playgroud)

现在它覆盖了panel1!如果我将它设置为其他任何东西(CENTER,SOUTH有什么东西),前两个面板完全消失.非常感谢帮助.

Mic*_*ers 13

SuperPanel可能是一个子类JPanel,对吧?你不小心加入panel2this(the SuperPanel),而不是sswp.尝试:

public JPanel supersweetpanel() {
        JPanel sswp = new JPanel();
        sswp.setLayout(new BorderLayout());
        sswp.add(panel2(), BorderLayout.NORTH);
        return sswp;
    }
Run Code Online (Sandbox Code Playgroud)

  • +1.这就是它,它提供了一个很好的例子,说明为什么使用继承可以使事情变得脆弱. (2认同)