技术中心

这里象征着我们的态度和能力

>AWT的几种布局管理器
作者:中国IT实验室    来源:中国IT实验室    发布时间:2012-05-03      浏览次数:7604
分享到:
欢迎进入Java社区论坛,与200万技术人员互动交流 >>进入
    AWT中常用的布局管理器有如下几个:FlowLayout, BorderLayout, GridLayout, GridBagLayout, CardLayout,Swing还提供了一个BoxLayout.
   
    FlowLayout从左向右排列所有组件,遇到边界就会折回下一行从新开始。它有三个构造器FlowLayout(),FlowLayout(int align)和 FlowLayout(int align, int hgap, int vgap),其中的hgap和vgap代表水平间距和垂直间距,align指的是组件的排列方向(从左向右,从右向左,从中间向两边),我们可以使用FlowLayout的静态常量来设置这个参数:FlowLayout.LEFT,FlowLayout.CENTER,FlowLayout.RIGHT.
   
    BorderLayout将容器分为EAST,SOUTH,WEST,NORTH,CENTER五个区域,如下图所示:
   

 
    我们在向使用此布局管理器的容器中添加组件时,需要制定添加到的区域,否则就默认添加到中间区域里,而当我们向一个区域添加多个组件时,后放入的组件会覆盖前面的组件。BorderLayout有两个构造器,BorderLayout()和BorderLayout(int hgap,int vgap),hgap和vgap代表的水平间距和垂直间距。我们在指定组件添加到的区域时,可以使用它的静态常量:BorderLayout.EAST, BorderLayout.WEST, BorderLayout.NORTH, BorderLayout.SOUTH, BorderLayout.CENTER.例如:
   
    Frame f = new Frame();
   
    f.setLayout(new BorderLayout(5,5));
   
    f.add(new Button("南"),SOUTH);//将一个按钮添加到南的位置
   
    BorderLayout最多只能放5个组件,但是实际上我们可以先在Panel中添加多个组件,再将Panel添加到BorderLayout布局管理器中,因此我们实际可以放的组件要远远超过5个。
   
    GridLayout将容器分割成大小相同的网格,我们在添加组件时将默认从左到右从上到下,将组件依次添加到每个网格中,而每个组件的大小也就由其所添加到的网格的大小所决定。GridLayout同样也有两个构造器,GridLayout(int rows,int cols)和GridLayout(int rows ,int cols,int hgap,int vgap),使用GridLayout的典型例子就是计算器的窗口:
   
    import java.awt.*;
   
    public class calculator
   
    {
   
    public static void main(String[] args)
   
    {
   
    Frame f = new Frame("计算器");
   
    Panel p1 = new Panel();
   
    p1.add(new TextField(30));
   
    f.add(p1,BorderLayout.NORTH);
   
    //设置p2采用GridLayout布局管理器
   
    Panel p2 = new Panel();
   
    p2.setLayout(new GridLayout(3,5,4,4));
   
    String[] name = {"0","1","2","3","4","5","6","7","8","9","+","-","*","/","."};
   
    for(int i=0;i<name.length;i++)
   
    {
   
    p2.add(new Button(name[i]));
   
    }
   
    f.add(p2);//默认添加到中间
   
    f.pack();// 设置窗口为最佳大小
   
    f.setVisible(true);
   
    }
   
    }
   
    运行结果如图:
   

 
    CardLayout将加入容器的所有组件看成一叠卡片,每次只有最上面的那个Component才可见,它有两个构造器CardLayout()和CardLayout(int hgap, int vgap),有五个方法用来控制其中的组件:
   
    first(Container target);//显示target容器中的第一张卡片
   
    last(Container target);
   
    previous(Container target);
   
    next(Container target);
   
    show(Container target,String name);//显示targer容器中指定名字的卡片
   
    例子:
   
    import java.awt.*;
   
    import java.awt.event.ActionEvent;
   
    import java.awt.event.ActionListener;
   
    public class calculator  {
   
    Frame f;
   
    Panel p1;
   
    Panel p2;
   
    String[] name = {"1","2","3","4","5"};
   
    CardLayout c;
   
    public void init()
   
    {
   
    f = new Frame("yz");
   
    p1 = new Panel();
   
    p2 = new Panel();
   
    c = new CardLayout();
   
    p1.setLayout(c);
   
    for(int i=0;i<name.length;i++)
   
    {
   
    p1.add(name[i],new Button(name[i]));
   
    }
   
    //控制显示上一张的按钮
   
    Button previous = new Button("上一张");
   
    previous.addActionListener(new ActionListener()
   
    {
   
    public void actionPerformed(ActionEvent e)
   
    {
   
    c.previous(p1);
   
    }
   
    });
   
    //控制显示下一张的按钮
   
    Button next = new Button("下一张");
   
    next.addActionListener(new ActionListener()
   
    {
   
    public void actionPerformed(ActionEvent e)
   
    {
   
    c.next(p1);
   
    }
   
    });
   
    //控制显示第一张的按钮
   
    Button first = new Button("第一张");
   
    first.addActionListener(new ActionListener()
   
    {
   
    public void actionPerformed(ActionEvent e)
   
    {
   
    c.first(p1);
   
    }
   
    });
   
    //控制显示最后一张的按钮
   
    Button last = new Button("最后一张");
   
    last.addActionListener(new ActionListener()
   
    {
   
    public void actionPerformed(ActionEvent e)
   
    {
   
    c.last(p1);
   
    }
   
    });
   
    //根据card名显示的按钮
   
    Button third = new Button("第三张");
   
    third.addActionListener(new ActionListener()
   
    {
   
    public void actionPerformed(ActionEvent e)

[1] [2] 下一页

4000-880-989
(24小时热线)
联系客服
微信公众号

官方公众号

小程序

©2008-2022 CORPORATION ALL Rights Reserved. 昆明奥远科技有限公司版权所有 滇ICP备09003328号-1 滇公网安备 53011102000818号 增值电信业务经营许可证号:滇B2-20110045
昆明那家网络公司好,新媒体运营,网站优化,网络推广,网站建设,网页设计,网站设计,网站推广,云南网站公司,昆明新媒体公司,云南网红主播,昆明SEO公司,昆明网站建设,昆明网络推广,昆明网站优化,昆明网站推广,红河网站建设,大理网络公司,曲靖网络公司,丽江网站设计,昭通网络公司,保山大数据服务,智慧高速建设,智慧校园服务,云南IDC服务商,网络安全测评,等保测评,网站关键词排名优化服务,服务客户尽超2000余家,一切尽在奥远科技,服务电话:13888956730