zoukankan      html  css  js  c++  java
  • java布局学习(新)

    坚持学习java一段时间,最近自己需要做一个小型的系统,所以需要自己将自己的AWT知识巩固一下。

    一、4大布局管理器。

    1.边界布局BorderLayout

    JFrameJDialog的默认布局方法,可以看成地图的排列方式,一共四个方位:东西南北和地图一样,不同的是上北和下南都没有中间的位置占有的大,中部的占有最大。

    举例:

    package com.ly;
    
    import javax.swing.*;
    import java.awt.*;
    
    public class demo1 extends JFrame{
    
        JButton jb1,jb2,jb3,jb4,jb5;
        public static void main(String[] args) {
            // TODO Auto-generated method stub
           demo1 d1=new demo1();
        }
        public demo1()
        {
            jb1=new JButton("中");
            jb2=new JButton("北");
            jb3=new JButton("东");
            jb4=new JButton("南");
            jb5=new JButton("西");
            
            //添加各个组件
            this.add(jb1,BorderLayout.CENTER);
            this.add(jb2,BorderLayout.NORTH);
            this.add(jb3,BorderLayout.EAST);
            this.add(jb4,BorderLayout.SOUTH);
            this.add(jb5,BorderLayout.WEST);
            
            //设置布局
            this.setTitle("边界布局");
            this.setSize(300,300);
            this.setLocation(200,200);
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.setVisible(true);
            
        }
    }

    2.流式布局FlowLayout

    这样的布局会使部件想水流一样流动从左到右排列,直到遇到边界后才重新排列。在Panel中默认使用这种排列方式。

    举例:

    package com.ly;
    
    import java.awt.FlowLayout;
    
    import javax.swing.*;
    
    public class Demo2 extends JFrame{
    
        JButton jb1,jb2,jb3,jb4,jb5;
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Demo2 d2=new Demo2();
        }
    
        public Demo2()
        {
            jb1=new JButton("1");
            jb2=new JButton("2");
            jb3=new JButton("3");
            jb4=new JButton("4");
            jb5=new JButton("5");
            
            this.add(jb1);
            this.add(jb2);
            this.add(jb3);
            this.add(jb4);
            this.add(jb5);
            
            //设置布局
            this.setLayout(new FlowLayout());
            this.setTitle("流布局");
            this.pack();
            this.setLocation(200,200);
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.setVisible(true);
        }
    }

    3.GridLayout布局管理器

    这样的布局管理将容器分割成纵横线的网络。我个人认为这样的布局方式较上两种都好,因为更加灵活,写一些基本的布局都可以转换。

    package com.ly;
    import java.awt.GridBagLayout;
    import java.awt.GridLayout;
    
    import javax.swing.*;
    
    public class Demo3 extends JFrame{
    
        int size=9;
        JButton []jbs=new JButton[size];
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
    
            Demo3 d3=new Demo3();
        
           
        }
    
         public Demo3()
            {
                for(int i=0;i<size;i++)
                {
                    jbs[i]=new JButton(String.valueOf(i));
                }
                
                //设置网格布局
                this.setLayout(new GridLayout(3,3));
                
                for(int i=0;i<size;i++)
                {
                    this.add(jbs[i]);
                }
                
                this.setTitle("网格布局");
                this.setSize(300,300);
                this.setLocation(200,200);
                this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                this.setVisible(true);
            }
    }

    4.CardLayout布局器

    CardLayout布局器采用时间进行管理组件,可以看层是一个卡片盒,只有最上面的compent可见。

    剩下的两种是我体会比较深的,特别是空布局,简直万能,不过就是要自己定位有些麻烦,大家有机会可以试试。

    1.null布局

    Container 的布局管理器设置为nullsetLayout(null)

    再往容器添加时先调用setBounds()setSize()设置组建大小和位置

    2.BoxLayout布局管理器

    我没用过这种管理器,不过这种管理器应该很强大,大家试试。

    BoxLayout(Cotainer target,int axis)  而布局有axis横向排列和

    纵向排列

    如:f.setLayout(new BoxLayout(f,BoxLayout.y_AXIS));

    BoxLayout通常和Box联合使用

    二、AWT的常用组件

    直接上程序吧,比较清晰。

     1 //AWT基本组件
     2 package com.ly.ll;
     3 import java.awt.*;
     4 import javax.swing.*;
     5 
     6 public class compoment {
     7 
     8     Frame f;  //创建窗口
     9     Button bt;
    10     CheckboxGroup cbg;  //复选框组
    11     Checkbox male,female,married;  //复选框
    12     Choice colorChoice;  //下拉选框
    13     List colorList;   //列表选择框
    14     TextArea ta;   //文本域(多行)
    15     TextField name;  //文本域(单行)
    16     
    17     public static void main(String []args)
    18     {
    19         compoment cp=new compoment();
    20     }
    21     
    22     
    23     public compoment()
    24     {
    25         //创建组件
    26         f=new Frame("测试界面");
    27         bt=new Button("确认");
    28         cbg=new CheckboxGroup();
    29         male =new Checkbox("男",cbg,true);
    30         female =new Checkbox("女",cbg,false);
    31         married =new Checkbox("是否已婚?",false);
    32         colorChoice=new Choice();
    33         colorList=new List(3,true);
    34         ta=new TextArea(5,20);   //5行20 列
    35         name=new TextField(50);   //50列
    36         
    37         //初始化组件
    38         colorChoice.add("红");
    39         colorChoice.add("黄");
    40         colorChoice.add("蓝");
    41         colorList.add("红");
    42         colorList.add("黄");
    43         colorList.add("蓝");
    44         //panel装载文本按钮
    45         Panel bottom=new Panel();
    46         bottom.add(name);
    47         bottom.add(bt);
    48         f.add(bottom,BorderLayout.SOUTH); //Frame默认边界布局
    49         
    50         Panel p2=new Panel();
    51         p2.add(colorChoice);
    52         p2.add(male);
    53         p2.add(female);
    54         p2.add(married);
    55         
    56         //创建垂直组件BOX
    57         Box topList=Box.createVerticalBox();
    58         topList.add(ta); //放入多航文本域
    59         topList.add(p2);
    60         
    61         Box top=Box.createVerticalBox();
    62         top.add(topList);
    63         top.add(colorList);
    64         f.add(top);
    65         f.pack();
    66         
    67         f.setVisible(true);
    68     }
    69 }

    显示结果:

    这样就对上面的知识点有了简单的总结和认识,但是要进行开发还是远远不够的

     下面是java实战.转(url)

      每日一小步,月过一大步~~加油

  • 相关阅读:
    Oracle中Lpad函数和Rpad函数的用法
    SQL中on条件与where条件的区别
    安装sqlServer
    springboot注解加深
    springcloud父项工程pom
    雪花算法
    docker 创建mysql容器
    docker入门
    restful接口规范(安全与幂等)
    mysql
  • 原文地址:https://www.cnblogs.com/ly199553/p/5321346.html
Copyright © 2011-2022 走看看