6

伙计们,这是一个相当基本的问题。

基本上我有这样的代码:

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

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

所以我做了以下更改:

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

存在supersweetpanel()

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

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

4

1 回答 1

14

SuperPanel很可能是 的子类JPanel,对吧?您不小心添加panel2this(the SuperPanel),而不是sswp. 尝试:

public JPanel supersweetpanel() {
        JPanel sswp = new JPanel();
        sswp.setLayout(new BorderLayout());
        sswp.add(panel2(), BorderLayout.NORTH);
        return sswp;
    }
于 2009-05-26T22:55:36.653 回答