zoukankan      html  css  js  c++  java
  • GUI图形界面编程之布局管理器

    布局管理器:实现使用不同方式排列界面上的组件。

    布局管理器接口LayoutManager

    使用布局管理器时,布局管理器负责各个组件大小与位置,用户无法设置组件大小与位置属性。如果使用,会被布局管理器覆盖。

    如果确实需要设置组件大小与位置,应取消该容器的布局管理器。(setLayout(null))

    使用setLayout()方法指定布局管理器

    实现接口的类:

    FlowLayout:流水型,由左到右,一行排满后换行。

                     Panel类默认布局管理器,默认居中。

    构造方法

    FlowLayout()
              构造一个新的 FlowLayout,它是居中对齐的,默认的水平和垂直间隙是 5 个单位。

    FlowLayout(int align)
              构造一个新的 FlowLayout,它具有指定的对齐方式,默认的水平和垂直间隙是 5 个单位。

    FlowLayout(int align, int hgap, int vgap)
              创建一个新的流布局管理器,它具有指定的对齐方式以及指定的水平和垂直间隙。

    /**
     * FlowLayout实例
     * 2014-4-20
     */
    import java.awt.Button;
    import java.awt.Color;
    import java.awt.FlowLayout;
    import java.awt.Frame;
    
    /**
     * 
     * @author Administrator
     *
     */
    public class flowLayoutDemo2 {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            Frame f=new Frame();
            //FlowLayout fl=new FlowLayout(FlowLayout.CENTER,20,40);
            f.setBackground(Color.GREEN);
            f.setLocation(200,200);
            f.setSize(400,400);
            f.setTitle(null);
            f.setVisible(true);
            f.setResizable(true);
            //f.setLayout(fl);
            f.setLayout(new FlowLayout(FlowLayout.CENTER,20,40));
            for(int i=0;i<5;i++)
                f.add(new Button());
            
    
        }
    
    }

    BorderLayout:划分为东,西,南,北,中。每个区域只能加入一个组件,如果不指定,组件的加入部位,则默认加入中部

    Frame类的默认布局管理器

    向容器中加入组件的方法

    public Component add( Component comp,
                         int index)
    将指定组件添加到此容器的给定位置上。

    构造方法:

    BordLayout()
              构造一个组件之间没有间距的新边框布局。

    BordLayout(int hgap, int vgap)
              构造一个具有指定组件间距的边框布局。

    import java.awt.BorderLayout;
    import java.awt.Button;
    import java.awt.Frame;
    
    
    public class BorderLayoutDemo {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Frame f;
            f = new Frame("Border Layout");
            Button bn = new Button("BN");
            Button bs = new Button("BS");
            Button bw = new Button("BW");
            Button be = new Button("BE");
            Button bc = new Button("BC");
            f.setLayout(new BorderLayout(30,40));
    
            
            f.add(bn, BorderLayout.NORTH);
            f.add(bs, BorderLayout.SOUTH);
            f.add(bw, BorderLayout.WEST);
            f.add(be, BorderLayout.EAST);
            f.add(bc, BorderLayout.CENTER);
    
    
            f.setSize(200,200);
            f.setVisible(true);
    
        }
    
    }

    GirdLayout:划分成规则的矩形网格,每个单元格区域大小相等,组件被添加到每个单元格中,先从左到右添满后换行

    构造方法

    GirdLayout()
              创建具有默认值的网格布局,即每个组件占据一行一列。

    GirdLayout(int rows, int cols)
              创建具有指定行数和列数的网格布局。

    GirdLayout(int rows, int cols, int hgap, int vgap)
              创建具有指定行数和列数的网格布局。

    import java.awt.Button;
    import java.awt.Frame;
    import java.awt.GridLayout;
    
    
    public class GirdLayoutDemo {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Frame f = new Frame("GridLayout Example");
            Button b1 = new Button("b1");
            Button b2 = new Button("b2");
            Button b3 = new Button("b3");
            Button b4 = new Button("b4");
            Button b5 = new Button("b5");
            Button b6 = new Button("b6");
            //三行两列
            f.setLayout (new GridLayout(3,2));
            f.add(b1);        
            f.add(b2);
            f.add(b3);        
            f.add(b4);
            f.add(b5);        
            f.add(b6);
            
            //f.pack();          
            f.setVisible(true);
        }
    
    }

    参考资料:尚学堂马士兵视频教程。

  • 相关阅读:
    zookeeper编译环境搭建
    windows下zookeeper安装并发布成windows服务
    ScheduledThreadPoolExecutor源码
    AbstractExecutorService源码
    FutureTask源码2
    FutureTask源码
    ThreadPoolExecutor源码2
    ThreadPoolExecutor源码1
    二进制转10进制
    Android ANR Waiting because no window has focus问题分析
  • 原文地址:https://www.cnblogs.com/shangshicc/p/3677926.html
Copyright © 2011-2022 走看看