【问题标题】:Adding additional JPanels to a JPanel向 JPanel 添加额外的 JPanel
【发布时间】:2009-05-26 22:38:01
【问题描述】:

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

基本上我有这样的代码:

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

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

所以我做了以下更改:

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!如果我将其设置为其他任何值(CENTERSOUTH,你有什么),前两个面板将完全消失。非常感谢您的帮助。

【问题讨论】:

    标签: java swing jpanel


    【解决方案1】:

    SuperPanel 可能是JPanel 的子类,对吧?您不小心将panel2 添加到thisSuperPanel),而不是sswp。试试:

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

    【讨论】:

    • +1。就是这样,它提供了一个很好的例子,说明为什么使用继承会使事情变得脆弱。
    • 啊,就是这样。可爱的。
    • 埃迪所说的。遗憾的是大多数 Swing 教程(和 Swing GUI)都有这么糟糕的代码。
    猜你喜欢
    • 2014-02-27
    • 1970-01-01
    • 2011-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多