徐猿 2017-08-17 04:53 采纳率: 0%
浏览 853

JAVA_GUI_AWT_BorderLayout相关问题(不能被连续引用多次)

import java.awt.*;

public class TenButtons {
    public static void main(String[] args) {
        GridLayout gl21 = new GridLayout(2,1);
        GridLayout gl22 = new GridLayout(2,2);
        BorderLayout bl = new BorderLayout();
        BorderLayout bl1 = new BorderLayout();

        Frame f1 = new Frame("TenButton");
        f1.setLayout(gl21);
        f1.setLocation(300, 400);
        Panel p1 = new Panel(bl1);
        //Panel p1 = new Panel(bl);
        Panel p2 = new Panel(bl);           
        Panel ucenter = new Panel(gl21);    
        Panel dcenter = new Panel(gl22);    

        Button btnuw = new Button("UpWest");
        Button btnue = new Button("UpEast");
        p1.add(btnuw, BorderLayout.WEST);   
        p1.add(btnue, BorderLayout.EAST);       
        Button btnu = new Button("CenterUp");
        Button btnd = new Button("CenterDown");
        ucenter.add(btnu);  
        ucenter.add(btnd);
        p1.add(ucenter, BorderLayout.CENTER);

        Button btndw = new Button("DownWest");
        Button btnde = new Button("DownEast");      
        p2.add(btndw, BorderLayout.WEST);   
        p2.add(btnde, BorderLayout.EAST);       
        for (int i=1; i<=4; i++) {
            dcenter.add(new Button("Center" + i));
        }
        p2.add(dcenter, BorderLayout.CENTER);

        f1.add(p1); 
        f1.add(p2);
        f1.pack();
        f1.setVisible(true);

    }
}

不知道为什么我BorderLayout连续引用两次会出现不同的结果??

这样出现结果正常

Panel p1 = new Panel(bl1);
Panel p2 = new Panel(bl);   

正确结果

这样出现的结果就没有了p1

Panel p1 = new Panel(bl);
Panel p2 = new Panel(bl);   

错误结果,p1不见了

然而 GridLayout gl21 也是被引用了两次(一次是Frame f1 ,一次是Panel ucenter),却没事

  • 写回答

1条回答 默认 最新

  • 鼠晓 博客专家认证 2017-08-17 05:48
    关注

    我试了一下,,p1设置的控件被p2设置的给覆盖掉了(至于怎么覆盖的我还没看出来)

    到最后 f1.add(p1); f1.add(p2);,,起始p1里已经没东西了,,,题主可以把f1.add(p2);注释了,,,窗口什么东西都没了。

    把f1.add(p1); 放在如下位置,,可以正常运行

     Panel p1 = new Panel(bl);
    Panel p2 = new Panel(bl);   
    。。。
     p1.add(ucenter, BorderLayout.CENTER);
     f1.add(p1); 
     Button btndw = new Button("DownWest");
    
     。。。
    
    评论

报告相同问题?

悬赏问题

  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?