有关于java的AWT编程中BorderLayout问题

import java.awt.*;

public class Main {

    public static void main(String[] args)
    {
        var p1 = new Panel();
        p1.setLayout(new BorderLayout());
        p1.add(new Button("*"),BorderLayout.SOUTH);
        p1.add(new Button("*"),BorderLayout.WEST);
        p1.add(new Button("*"),BorderLayout.EAST);
        p1.add(new Button("*"),BorderLayout.NORTH);
        p1.add(new Button("*"),BorderLayout.CENTER);
        var p = new Frame();
        p.setLayout(new BorderLayout());
        p.add(p1,BorderLayout.NORTH);
        p.add(p1,BorderLayout.SOUTH);
        p.add(p1,BorderLayout.WEST);
        p.add(p1,BorderLayout.EAST);
        p.add(p1,BorderLayout.CENTER);
        p.pack();
        p.setVisible(true);
    }
}

我的想法是在p中的五个部分放入p1(这个也是BorderLayout布局),因为BorderLayout布局管理器不是每个区域只能放一个组件吗,但是Panel也是组件,我就想把p1放入p的五个部分,但结果只是程序中p的最后一个add效果,不应该是区域重复才会替换吗,这个为啥跟我想的结果不一样?感谢大佬们的回答,感激不尽!

同一个p1不能同时放在5个不同的区域,如果想达到你想要的效果,必须定义5个Panel。

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y