精华内容
下载资源
问答
  • Java三大常用布局管理器

    万次阅读 2015-08-21 19:33:10
    三大常用布局管理器:BorderLayout,FlowLayout,GridLayout,以及计算器的案例

    首先我们要了解布局管理器的作用

    Java布局管理器作用:

    跨平台时,当一个窗体中有文本控件,又有标签,还有按钮,这时你怎么控制它们在窗体中的排列顺序和位置呢,JAVA定义了布局管理器来处理这个问题的

    三大常用布局管理器:
    1.BorderLayout
    将版面划分成东、西、南、北、中五个区域,将添加的组件按指定位置放置。
        BorderLayout.EAST
        BorderLayout.WEST
        BorderLayout.SOUTH
        BorderLayout.NORTH
        BorderLayout.CENTER
    构造函数:
    BorderLayout()
    注意事项:
    1、不是五个部分都必须添加
    2、中部组件会自动调节大小(在其他部位没有的时候)
    3、JFrame,JDialog 默认布局管理器就是BorderLayout
    案例:
    <span style="font-family:KaiTi_GB2312;font-size:18px;">/*
     * BorderLayout演示
     * 1.继承JFrame
     * 2.定义你需要的组件
     * 3.创建组件(构造函数)
     * 4.添加组件
     * 5.对窗体设置
     * 6.显示窗体
     */
    package com.test1;
    import java.awt.*;
    import javax.swing.*;
    
    
    //继承JFrame类(窗体)和VB窗体相似
    public class Demo8_2 extends JFrame{
    
    	//定义组件
    	JButton jb1,jb2,jb3,jb4,jb5;
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Demo8_2 demo8_2=new Demo8_2();
    	}
    	
    	public Demo8_2()
    	{
    		//创建组件
    		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,200);//大小
    
    		this.setLocation(200,300);//初始位置
    
    				this.setResizable(false);//禁止用户改变窗体大小
    
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗体时关闭java虚拟机,以免占用内存
    		
    		//显示窗体
    		this.setVisible(true);
    	}
    }
    </span>
    效果:

    2.FlowLayout(流式布局)
    组件按从左到右而后从上到下的顺序依次排列,一行不能放完则折到下一行。


    构造函数:
    FlowLayout()
    建立一个默认为居中对齐,组件彼此有5单位的水平与垂直间距的FlowLayout
    FlowLayout(int align)
    建立一个可设置排列方式且组件彼此有5单位的水平与垂直间距的FlowLayout
    FlowLayout(int align,int hgap,int vgap)
    建立一个可设置排列方式与组件间距的FlowLayout


    注意事项:
    1、不限制它所管理的组件大小,允许它们有最佳大小
    2、当容器被缩放时,组件的位置可能变化,但组件的大小不变(在窗体属性那里加如下代码即可)
    <span style="font-family:KaiTi_GB2312;font-size:18px;">//禁止用户改变窗体大小
    this.setResizable(false);</span>
    3、默认组件是居中对齐,可以通过FlowLayout(int align)函数来指定对齐方式(如下图)
    案例:代码和上面一样除添加各个组件,定位那里,如下
    <span style="font-family:KaiTi_GB2312;font-size:18px;">//添加组件
    		this.add(jb1);
    		this.add(jb2);
    		this.add(jb3);
    		this.add(jb4);
    		this.add(jb5);
    		this.add(jb6);
    		
    		//设置布局管理器
    		this.setLayout(new FlowLayout(FlowLayout.LEFT));//这里定位也有多个方案,如下图		</span>

    效果:(我选的是左对齐)先填满第一排,然后再左对齐


    3.GridLayout(网格布局)
    矩形网格形式对容器的组件进行布置
     
    构造函数:
    GridLayout()
    建立一个默认为一行一列的GridLayout
    GridLayout(int rows,int cols)
    建立一个指定行(rows)和列(cols)的GridLayout
    GridLayout(int rows,int cols,int hgap,int vgap)
    建立一个指定行(rows)和列(cols),且组件间水平间距为hgap、垂直间距为vgap的GridLayout

    案例:
    <span style="font-family:KaiTi_GB2312;font-size:18px;">/*
     * 功能:网格布局演示
     * 
     */
    package com.test1;
    import java.awt.*;
    
    import javax.swing.*;
    public class Demo8_4 extends JFrame{
    	
    	//定义一个按钮数组(9个)
    	int size=9;
    	JButton jbs[]=new JButton[size];
    	
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Demo8_4 demo8_4=new Demo8_4();
    	}
    	public Demo8_4()
    	{
    		//创建组件(按钮)
    		for(int i=0;i<size;i++)
    		{
    			jbs[i]=new JButton(String.valueOf(i));
    		}
    		
    		//设置网格布局(3行3列)(int rows,int cols) 后面两个10是水平垂直距离
    		this.setLayout(new GridLayout(3,3,10,10));
    		
    		//添加组件
    		for (int i=0;i<size;i++)
    		{
    			this.add(jbs[i]);
    		}
    		
    		//设置窗体
    		this.setTitle("网格布局案例");
    		this.setSize(300,200);
    		this.setLocation(200,300);
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗体时关闭java虚拟机
    		
    		this.setVisible(true);
    	}
    }</span>
    效果:


    那我们就来做个计算器吧
    <span style="font-family:KaiTi_GB2312;font-size:18px;">package com.test1;
    import java.awt.*;
    import javax.swing.*;
    
    public class Demo8_5 extends JFrame{
    			
    	  //定义字符串数组,为按钮的显示文本赋值
    	  //注意字符元素的顺序与循环添加按钮保持一致
    	  String str[]={"7","8","9","/","4","5","6","*","1","2","3","-","0",".","=","+"};    
              JButton btn[]=new JButton[str.length];	//声明按钮组件
              
              //定义面板,并设置为网格布局,4行4列,组件水平、垂直间距均为3
              JPanel p=new JPanel(new GridLayout(4,4,3,3));  //面板组件Jpanel
              JTextArea t=new JTextArea();        //定义文本框
              
              
              public static void main(String[] args){
            	  
            	  Demo8_5 demo8_5 =new Demo8_5();
              }
    
              
         public Demo8_5(){
       	  	
        	//创建组件
            for(int i=0;i<str.length;i++){
    
                   btn[i]=new JButton(str[i]);
    
                   p.add(btn[i]);
    
             }
            
                setLayout(new BorderLayout());     //定义窗体布局为边界布局
               
                getContentPane().add(t,BorderLayout.NORTH);      //将文本框放置在窗体NORTH位置
                getContentPane().add(p,BorderLayout.CENTER);     //将面板放置在窗体CENTER位置
                
                //设置窗体属性
                this.setTitle("计算器布局案例");
                this.setSize(250,200);
                this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                this.setLocationRelativeTo(null);                     //让窗体居中显示
                this.setVisible(true);
            }
    } 
    
    </span>
    效果:


    展开全文
  • Java GUI编程的几种常用布局管理器

    千次阅读 2017-08-24 11:59:48
    Java GUI编程的几种常用布局管理器 本人是一个大二的学生。因为最近有做JavaGUI界面的需求,因此重新开始熟悉JavaGUI的各种控件和布局。然后以次博文为笔记,总结、完善以及发表最近学习的一些技术要点。希望各位...

    Java GUI编程的几种常用布局管理器

    本人是一个大二的学生。因为最近有做JavaGUI界面的需求,因此重新开始熟悉JavaGUI的各种控件和布局。然后以次博文为笔记,总结、完善以及发表最近学习的一些技术要点。希望各位支持和指正。

    目录

    下面我们来介绍一下Java的几种常用的布局管理器:

    一、BorderLayout默认布局管理器

    这个布局管理器,如果不指定位置会默认把控件放到Center,而且会不断地覆盖。具体效果和代码如下:

    public class SystemGUI extends JFrame{
    
        public SystemGUI(String sTitle){
            super(sTitle);
    
            setSize(800,600);
            Container c= getContentPane();
            c.setBackground(Color.GRAY);
    
            JPanel pan =new JPanel();
            pan.setBackground(Color.WHITE);
            pan.setSize(800,600);
            add(pan);
        }
        public static void main(String[] args) {
            SystemGUI frm = new SystemGUI("Test");
            frm.add(BorderLayout.NORTH,new JButton("North"));
            frm.add(BorderLayout.SOUTH,new JButton("South"));
            frm.add(BorderLayout.WEST,new JButton("West"));
            frm.add(BorderLayout.EAST,new JButton("East"));
            frm.add(BorderLayout.CENTER,new JButton("Center"));
            ze(500,100);
            frm.setVisible(true);
    
        }
    
    }

    ]

    二、FlowLayout布局管理器

    这个布局管理器,效果稍微比默认布局管理器好一点,因为它能保证控件不会重叠,而且会按照你添加的顺序排列到容器里面。但是缺点是,当你拉动面板改变大小,那

    public class SystemGUI extends JFrame{
    
        public SystemGUI(String sTitle){
            super(sTitle);
    
            setSize(800,600);
            Container c= getContentPane();
            c.setBackground(Color.GRAY);
    
    
            JPanel pan =new JPanel();
            pan.setBackground(Color.WHITE);
            pan.setSize(800,600);
            add(pan);
        }
        public static void main(String[] args) {
            SystemGUI frm = new SystemGUI("Test");
            frm.setLayout(new FlowLayout()); 
            for(int i = 1; i <=5; i++)
               frm.add(new JButton("Button " + i));
               frm.setVisible(true);
               frm.setSize(500,100);
            frm.setVisible(true);
    
        }
    
    }

    拉动之前
    拉动之后

    三、GridLayout布局管理器

    表格布局能帮我们把空间有序整齐地放到我们的容器里面,并且不会像FlowLayout那样,拉动窗口,控件的位置也会变化。

    public class SystemGUI extends JFrame{
        public SystemGUI(String sTitle){
            super(sTitle);
    
            setSize(800,600);
            Container c= getContentPane();
            c.setBackground(Color.GRAY);
            //c.setLayout(null);
    
    
            JPanel pan =new JPanel();
            pan.setBackground(Color.WHITE);
            pan.setSize(800,600);
            add(pan);
        }
        public static void main(String[] args) {
            SystemGUI frm = new SystemGUI("Test");
            frm.setLayout(new GridLayout(3,2));   //3行2列的表格布局
            for(int i = 0; i < 7; i++)
              frm.add(new JButton("Button " + i));   
              frm.setVisible(true);
              frm.setSize(500,300);
    
            frm.setVisible(true);
    
        }
    
    }

    拉动前

    拉动后

    四、GridBagLayout布局管理器

    这个包位于java.awt包中,这是最复杂的布局管理器。在此布局中,组件大小不必相同。要使用该布局管理器还要有一个辅助类GridBagConstraints。其重要属性包括gridx,gridy,gridwidth,gridheight,fill,anchor,weightx,weighty。这些值会相互影响。

    gridx,gridy——组件在网格中的相对位置,类似与直角坐标系里面的位置分布;

    gridwidth,gridheight——设置组件在表格当中的大小的,占用几行几列,默认值为1.

    weightx和weighty参数可以设置当你的窗口被拉大(或拉小)的时候,组件所按照什么比例进行缩放,数字越大,组件变化的会越大;

    anchor ——当组件小于其显示的区域,那么该显示到何处。注意,GridBagconstraints。anchor在GridBagConstraints.fill=GridBagConstraints
    .NONE(不打算填充)时才生效。

    fill——当组件所处的动态表格里面有空余的位置的时候,组件将按什么方向填充,这个参数在界面中比较关键一点;
    这里容我偷一下懒,转载一段代码,原网页连接在参考文献【1】:

    import java.awt.*; 
    import javax.swing.*; 
    
    public class GridBagDemo extends JFrame { 
    public static void main(String args[]) { 
    GridBagDemo demo = new GridBagDemo(); 
    } 
    
    public GridBagDemo() { 
    init(); 
    this.setSize(600,600); 
    this.setVisible(true); 
    } 
    public void init() { 
    j1 = new JButton("打开"); 
    j2 = new JButton("保存"); 
    j3 = new JButton("另存为"); 
    j4 = new JPanel(); 
    String[] str = { "java笔记", "C#笔记", "HTML5笔记" }; 
    j5 = new JComboBox(str); 
    j6 = new JTextField(); 
    j7 = new JButton("清空"); 
    j8 = new JList(str); 
    j9 = new JTextArea(); 
         j9.setBackground(Color.PINK);//为了看出效果,设置了颜色 
    GridBagLayout layout = new GridBagLayout(); 
    this.setLayout(layout); 
    this.add(j1);//把组件添加进jframe 
    this.add(j2); 
    this.add(j3); 
    this.add(j4); 
    this.add(j5); 
    this.add(j6); 
    this.add(j7); 
    this.add(j8); 
    this.add(j9); 
    GridBagConstraints s= new GridBagConstraints();//定义一个GridBagConstraints, 
    //是用来控制添加进的组件的显示位置 
    s.fill = GridBagConstraints.BOTH; 
    //该方法是为了设置如果组件所在的区域比组件本身要大时的显示情况 
    //NONE:不调整组件大小。 
    //HORIZONTAL:加宽组件,使它在水平方向上填满其显示区域,但是不改变高度。 
    //VERTICAL:加高组件,使它在垂直方向上填满其显示区域,但是不改变宽度。 
    //BOTH:使组件完全填满其显示区域。 
    s.gridwidth=1;//该方法是设置组件水平所占用的格子数,如果为0,就说明该组件是该行的最后一个 
    s.weightx = 0;//该方法设置组件水平的拉伸幅度,如果为0就说明不拉伸,不为0就随着窗口增大进行拉伸,0到1之间 
    s.weighty=0;//该方法设置组件垂直的拉伸幅度,如果为0就说明不拉伸,不为0就随着窗口增大进行拉伸,0到1之间 
    layout.setConstraints(j1, s);//设置组件 
    s.gridwidth=1; 
    s.weightx = 0; 
    s.weighty=0; 
    layout.setConstraints(j2, s); 
    s.gridwidth=1; 
    s.weightx = 0; 
    s.weighty=0; 
    layout.setConstraints(j3, s); 
    s.gridwidth=0;//该方法是设置组件水平所占用的格子数,如果为0,就说明该组件是该行的最后一个 
    s.weightx = 0;//不能为1,j4是占了4个格,并且可以横向拉伸, 
    //但是如果为1,后面行的列的格也会跟着拉伸,导致j7所在的列也可以拉伸 
    //所以应该是跟着j6进行拉伸 
    s.weighty=0; 
    layout.setConstraints(j4, s) 
    ;s.gridwidth=2; 
    s.weightx = 0; 
    s.weighty=0; 
    layout.setConstraints(j5, s); 
    ;s.gridwidth=4; 
    s.weightx = 1; 
    s.weighty=0; 
    layout.setConstraints(j6, s); 
    ;s.gridwidth=0; 
    s.weightx = 0; 
    s.weighty=0; 
    layout.setConstraints(j7, s); 
    ;s.gridwidth=2; 
    s.weightx = 0; 
    s.weighty=1; 
    layout.setConstraints(j8, s); 
    ;s.gridwidth=5; 
    s.weightx = 0; 
    s.weighty=1; 
    layout.setConstraints(j9, s); 
    } 
    JButton j1; 
    JButton j2; 
    JButton j3; 
    JPanel j4; 
    JComboBox j5; 
    JTextField j6; 
    JButton j7; 
    JList j8; 
    JTextArea j9; 
    }

    小案例

    参考文献:
    1、Java最重要的布局管理器
    2、Java程序设计教程【清华大学出版社】

    展开全文
  • QT 常用布局管理器

    千次阅读 2019-09-07 00:03:24
    QT主要布局管理器分类 QHBoxLayout(水平布局) 把子窗口从左到右排列在一个水平行上。 QWidget *window = new QWidget; QPushButton *button1 = new QPushButton("One"); QPushButton *button2 = new ...

    Qt布局管理详解

    详解 QT 布局管理界面 图文并茂

    QT主要布局管理器分类

    QHBoxLayout(水平布局)

    把子窗口从左到右排列在一个水平行上。

    QWidget *window = new QWidget;
    QPushButton *button1 = new QPushButton("One");
    QPushButton *button2 = new QPushButton("Two");
    QPushButton *button3 = new QPushButton("Three");
    QPushButton *button4 = new QPushButton("Four");
    QPushButton *button5 = new QPushButton("Five");
    
    QHBoxLayout *layout = new QHBoxLayout;
    layout->addWidget(button1);
    layout->addWidget(button2);
    layout->addWidget(button3);
    layout->addWidget(button4);
    layout->addWidget(button5);
    
    window->setLayout(layout);
    window->show();

    运行结果:

    QVBoxLayout(垂直布局)

    把子窗口从上到下排列在一个垂直列上。

    QWidget *window = new QWidget;
    QPushButton *button1 = new QPushButton("One");
    QPushButton *button2 = new QPushButton("Two");
    QPushButton *button3 = new QPushButton("Three");
    QPushButton *button4 = new QPushButton("Four");
    QPushButton *button5 = new QPushButton("Five");
    
    QVBoxLayout *layout = new QVBoxLayout;
    layout->addWidget(button1);
    layout->addWidget(button2);
    layout->addWidget(button3);
    layout->addWidget(button4);
    layout->addWidget(button5);
    
    window->setLayout(layout);
    window->show();

    运行结果:

    QGridLayout(表格布局)

    把子窗口排列在一个二维的网格中,窗口可占据多个单元格。
    QGridLayout::addWidget()语法:
    layout->addWidget(widget, row, column, rowSpan, columnSpan);

    widget:为插入到这个布局的子控件;
    (row,column)为控件占据的左上角单元格位置;
    rowSpan是控件占据的行数,colunmSpan是控件占据的列数。
    (rowSpan和colunmSpan默认值为1)

    QWidget *window = new QWidget;
    QPushButton *button1 = new QPushButton("One");
    QPushButton *button2 = new QPushButton("Two");
    QPushButton *button3 = new QPushButton("Three");
    QPushButton *button4 = new QPushButton("Four");
    QPushButton *button5 = new QPushButton("Five");
    
    QGridLayout *layout = new QGridLayout;
    layout->addWidget(button1, 0, 0);
    layout->addWidget(button2, 0, 1);
    layout->addWidget(button3, 1, 0, 1, 2);
    layout->addWidget(button4, 2, 0);
    layout->addWidget(button5, 2, 1);
    
    window->setLayout(layout);
    window->show();

    运行结果:

    Stacked Layouts(分组布局)

    QStackedLayout类把子控件进行分组或者分页,一次只显示一组或者一页,隐藏其他组或者页上的控件。
    接口:

    int addWidget(QWidget * widget)
    添加页面,并返回页面对应的索引

    int count() const
    获取页面数量

    int currentIndex() const
    获取当前页面的索引

    QWidget * currentWidget() const
    获取当前页面

    int indexOf(QWidget * widget) const
    获取QWidget页面所对应的索引

    int insertWidget(int index, QWidget * widget)
    在索引index位置添加页面

    void removeWidget(QWidget * widget)
    移除QWidget页面,并没有被删除,只是从布局中移动,从而被隐藏。

    QWidget * widget(int index) const
    获取索引index所对应的页面

    Form Layout布局设置(表格布局)

    专门用于管理输入控件和与之相关的标签等表单布局,QFormLayout固定为两列布局,并针对表单做了建模,配套了一堆方便使用的函数。网格布局器的基本单元是单元格,而表单布局器的基本单元是行。表单布局器是高度建模并封装的,它没有 addWidget()和 addLayout()之类的函数,它只有addRow()函数。表单布局器中一行的空间可以由多个控件占据,也可以由一个控件占据。

    QSpliter分割器的作用

    分裂器 QSplitter 是一个实体功能控件,它的基类是 QFrame,QFrame 基类正是 QWidget。QSplitter 可以独立存在,可以作为父窗口容纳多个子控件,分裂器会完全拥有内部的子控件。在 Qt 设计师或 QtCreator 设计模式左边 Widget Box 里面没有分裂器可以拖动,使用分裂器的方式是:选中已有的控件,然后点击上面工具栏的水平分裂器或垂直分裂器按钮。比如上图是将三个丰富文本编辑器作为一个水平分裂器排布 的。分裂器内每个控件都有一个手柄 Handle,水平分裂器内控件的手柄在左边,垂直分裂器内控件的手柄在控件上方。第 0 个控件的手柄是永久隐藏的,分裂器自身占据的大矩形四个边界线通常不能拖动拉大,只能拖动控件之间的手柄,比如上图的手柄 1 和 手柄 2 。分裂器整体的尺寸不是用户控制的,而在分裂器内部的控件尺寸可以让用户手工拖动手柄来控制。在程序运行时,水平分裂器内各个控件的宽度、垂直分裂器内部各个控件的高度, 一般都是用户拖动手柄控制,这是分裂器和布局器最大的不同。

     

    QT中有三种方式对窗体上的控件进行布局管理:绝对位置定位(absolute positioning),手工布局(manual layout),布局管理器(layout managers)

    绝对位置定位(控件布局是固定位置,没有自适应功能)

    手工布局给出控件的绝对位置,但是他们的尺寸根据窗口的大小确定,可以通过重写窗体控件的resizeEvent()实现对子控件的大小设置。

    布局管理器,运用QHBoxLayout、QVBoxLayout、QGridLayout、QFormLayout、QStackLayout等布局。

     

     

     

    展开全文
  • 在Swing中,每个组件在容器中都有一个具体的位置...Swing提供的常用布局管理器包括流布局管理器、边界布局管理器和网格布局管理器。本文将探讨Swing中常用的布局管理器。 一、边界布局管理器 在默认情况下,Swing组件的

    在Swing中,每个组件在容器中都有一个具体的位置和大小,而在容器中摆放各种组件时,很难判断其具体位置和大小。布局管理器提供了Swing组件安排,展示在容器中的方法及基本的布局功能。使用布局管理器能有效的处理整个窗体的布局。Swing提供的常用布局管理器包括流布局管理器、边界布局管理器和网格布局管理器。本文将探讨Swing中常用的布局管理器。

    一、边界布局管理器

    在默认情况下,Swing组件的布局模式是边界(BorderLayout)布局管理器。边界布局管理器可以将容器划分为东、南、西、北、中5个区域,可以将组件加入到这5个区域中。区域的控制可以由BorderLayout类中的成员变量来决定,这些成员变量的含义如下:

    BorderLayout.NORTH   在容器中添加组件时,组件置于顶端
    BorderLayout.SOUTH  在容器中添加组件时,组件置于底端
    BorderLayout.EAST    在容器中添加组件时,组件置于右端
    BorderLayout.WEST  在容器中添加组件时,组件置于左端
    BorderLayout.CENTER  在容器中添加组件时,组件置于中间开始填充

    下面我们引入一个边界布局管理器的实例,效果如下:


    代码如下:

    /*第30讲 布局管理器
     * BorderLayout演示
     * 1.继承JFrame
     * 2.定义你需要的组件
     * 3.创建组件(构造函数)
     * 4.添加组件
     * 5.对窗体进行设置
     * 6.显示窗体
     * */
    
    package com.test1;
    import java.awt.*;
    import javax.swing.*;
    
    public class Demo8_2 extends JFrame{
    
    	//定义组件
    	JButton jb1,jb2,jb3,jb4,jb5;
    	
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Demo8_2 demo8_2=new Demo8_2();
    	}
    	
    	public Demo8_2()
    	{
    		//创建组件
    		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,200);
    		this.setLocation(200,200);
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		
    		//显示窗体
    		this.setVisible(true);
    		
    	}
    
    }
    

    二、流式布局管理器

    流式布局管理器(FlowLayout)是最基本的布局管理器,在整个容器中的布局正如其名,像“流”一样从左到右摆放组件,直到占据这一行的所有空间,然后再向下移动一行。默认情况下,组件在每一行都是居中排列的。也可通过设置更改组件在每一行上的排列位置。

    下面是一个流式布局管理器的实例,效果如下:


    代码如下:

    /*第30讲 布局管理器
     * 功能:流式布局
     * */
    
    package com.test1;
    import java.awt.*;
    import javax.swing.*;
    
    
    public class Demo8_3 extends JFrame{
    
    	//定义需要的组件
    	JButton jb1,jb2,jb3,jb4,jb5,jb6;
    	
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Demo8_3 demo8_3=new Demo8_3();
    
    	}
    	//构造函数
    	public Demo8_3()
    	{
    		//创建组件
    		jb1=new JButton("关羽");
    		jb2=new JButton("张飞");
    		jb3=new JButton("赵云");
    		jb4=new JButton("马超");
    		jb5=new JButton("黄忠");
    		jb6=new JButton("魏延");
    		
    		//添加组件
    		this.add(jb1);
    		this.add(jb2);
    		this.add(jb3);
    		this.add(jb4);
    		this.add(jb5);
    		this.add(jb6);
    		
    		//设置布局管理器
    		this.setLayout(new FlowLayout(FlowLayout.LEFT));
    		
    		//设置窗体属性
    		this.setTitle("流式布局案例");
    		this.setSize(300,200);
    		this.setLocation(200,200);
    		//禁止用户改变窗体大小
    		this.setResizable(false);
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		
    		//显示
    		this.setVisible(true);
    	}
    
    }
    

    三、网格布局管理器

    网格(GridLayout)布局管理器将容器划分为网格,所以组件可以按行和按列进行排列。网格布局管理器中,每一个组件的大小都相同,网格中空格的个数由网格的行数和列数决定,如一个两行两列的网格能产生4个大小相等的网格。组件从网格的左上角开始,按照从左到右,从上到下的顺序加入到网格中,而且每一个组件都会填满整个网格,改变窗体的大小,组件的大小也会随之改变。

    网格布局管理器主要有以下两个常用的构造方法

    public GridLayout(int rows,int columns)

    public GridLayout(int rows,int columns,int horizGap,int vertGap)

    rows与columns参数代表网格的行数和列数,这两个参数只有一个参数可以为0,代表一行或一列可以排列任意多个组件;参数horizGap与vertGap指定网格之间的间距,其中horizGap指定网格之间的水平间距,vertGap参数指定网格之间的垂直间距。

    下面引入网格布局管理器的例子,效果如下:


    代码如下:

    /*第30讲 布局管理器
     * 网格布局
     * */
    
    package com.test1;
    import java.awt.*;
    import javax.swing.*;
    
    public class Demo8_4 extends JFrame{
    
    	//定义组件
    	int size=9;
    	JButton jbs[]=new JButton[size];
    	
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		//创建实例
    		Demo8_4 demo8_4=new Demo8_4();
    	}
    
    	//构造
    	public Demo8_4()
    	{
    		//创建组件
    		for(int i=0;i<9;i++)
    		{
    			jbs[i]=new JButton(String.valueOf(i));
    		}
    		
    		//设置网格布局
    		this.setLayout(new GridLayout(3,3,10,10));
    		
    		//添加组件
    		for(int i=0;i<size;i++)
    		{
    			this.add(jbs[i]);
    		}
    		
    		//设置窗体属性
    		this.setTitle("网格布局案例");
    		this.setSize(300, 200);
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		this.setLocation(200, 200);
    		
    		//显示
    		this.setVisible(true);
    	}
    }
    

    多种布局管理器也可以综合使用,下面引入一个例子,效果如下:


    在这个例子的框图由上中下三个部分组成,可通过边界布局管理器实现。而顶层的JPanel 1和底层的JPanel 2使用的是流式布局管理器来摆放按钮。

    代码如下:

    /*
     * 多种布局管理器的使用
     * 第31讲 常用组件
     * */
    package com.test1;
    import java.awt.*;
    import javax.swing.*;
    
    public class Demo8_5 extends JFrame{
    
    	//定义组件
    	JPanel jp1,jp2;
    	JButton jb1,jb2,jb3,jb4,jb5,jb6;
    	
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Demo8_5 demo8_5=new Demo8_5();
    	}
    	
    	//构造函数
    	public Demo8_5()
    	{
    		//创建组件
    		//JPanel默认布局是FlowLayout
    		jp1=new JPanel();
    		jp2=new JPanel();
    		
    		jb1=new JButton("西瓜");
    		jb2=new JButton("苹果");
    		jb3=new JButton("荔枝");
    		jb4=new JButton("葡萄");
    		jb5=new JButton("桔子");
    		jb6=new JButton("香蕉");
    		
    		//设置布局
    		
    		//添加JPanel
    		jp1.add(jb1);
    		jp1.add(jb2);
    		jp2.add(jb3);
    		jp2.add(jb4);
    		jp2.add(jb5);
    		
    		//把panel加入到JFrame
    		
    		this.add(jp1,BorderLayout.NORTH);
    		this.add(jb6,BorderLayout.CENTER);
    		this.add(jp2,BorderLayout.SOUTH);
    		
    		this.setSize(300, 200);
    		this.setLocation(200,200);
    		this.setVisible(true);
    	}
    	
    
    }
    



    展开全文
  •  * 三大常用布局管理器  * #布局管理器-介绍  * 1.概念  * 组件在容器(比如JFrame)中的位置和大小是由布局管理器来决定的.所有的容器都会使用一个布局  * 管理器,通过它来自动进行组件...
  • QT主要布局管理器分类QHBoxLayout(水平布局)把子窗口从左到右排列在一个水平行上。 样例代码:QWidget *window = new QWidget; QPushButton *button1 = new QPushButton("One"); QPushButton *button2 = new ...
  • Android常用布局管理器总结

    千次阅读 2017-05-30 19:19:23
    主要分为两大部分,View(视图:普通控件)和ViewGroup(容器:布局管理器)。LinearLayout 线性布局管理器线性布局内的控件不换行或换列,组件依次排列,超出容器的控件则不会被显示。 主要属性说明: android:ori
  • Java界面常用布局管理器

    万次阅读 2016-09-18 19:35:21
    这是第一次在博客园里面写博客,是有关JAVA页面设计当中的布局管理器,可能大多数人会选择使用 NetBeans 或者是Eclipse 的组件来实现可视化拖拽组件来达到自己页面设计布局,因为是第一次做界面,总结一下,以供...
  • 设置布局管理器5.添加组件6.设置窗体参数7.设置窗体可见如果是BorderLayout,则省略第4步,因为默认就是BorderLayout三大布局管理器当放大或者缩小会有什么变化?什么会发生变化?看图说话:BorderLayout:中部长和...
  • 1.相对布局-RelativeLayout 常用属性: android:gravity:用于控制布局管理器中控件的摆放方式 android:ignoreGravity:设置该控件不受上一个属性设置的影响
  • 图形用户界面(gui): 用户与程序交互的窗口。 AWT(库文件)----&gt;swing------&gt;swt(库文件)-----&...JFace(图形包) ide(集成开发环境)-----VS、eclipse等 swing组件: 边界布局管理器 ...
  • 4种常用布局管理器的实现代码

    千次阅读 2010-03-24 11:26:00
    (1):使用Container.setLayout(null)方法取消布局管理器 (2)使用Component.setBounds()方法设置每个组件的的大小和位置 import java.awt.*; import javax.swing.*; public class AbsolutePostion extends...
  • 使用布局管理器管理布局

    千次阅读 2017-08-20 13:00:01
    1 使用布局管理器管理布局 布局管理器会为每种类型的窗口部件提供一些合理的大小、位置默认值,...1.1 三种常用布局管理器 1.1.1 QHBoxLayout layout->addStretch()告诉布局管理器,它会占满布局中这一处空间。在Q
  • 布局管理器

    2016-06-11 16:47:35
    每种布局管理器都有自己的摆放风格,下面给大家介绍几种常用布局管理器。1、BorderLayout(边框布局管理器) 摆放的风格:上北、下南 、左西、右东、中 。 Borderlayout 要注意的事项: 1)使用Borderlayout添加...
  • 作者:firstmiki ...来源:firstmiki的博客...这篇博文仅仅简单介绍了三种常见的布局管理器,都是一些简单应用; 一、 边界布局管理器(FlowLayout) /* * 功能:演示边界布局管理器:组件的位置和大小 */ package GU...
  • FrameLayout(帧布局),这个布局直接在屏幕上开辟出一块空白的区域,当我们往里面添加控件的时候,会默认把他们放到这块区域的左上角,而这种布局方式却没有任何的定位方式,所以它应用的场景并不多;帧布局的大小由控件中...
  •  Java中的布局管理器经常用到的也就是三种(流布局管理器FlowLayout、边界布局管理器BorderLayout、网格布局管理器GridLayout),复杂的界面采用单一的布局管理器完成比较困难,一般(流布局管理器、边界布局管理器...
  • java中的AWT布局管理器

    千次阅读 2014-02-22 14:30:04
    常用布局管理器 FlowLayout  1.从左到右按顺序配置在Container中,若到达右边界,则会折回到下一行中  2.FlowLayout是Panel和Applet的默认管理器  3.构造方法:FlowLayout()、FlowLayout(int align)...
  • Java布局管理器组件

    千次阅读 多人点赞 2016-05-09 19:25:26
    Java布局管理器组件所谓布局管理器,...目前开发中,常用布局管理器有BorderKayout、FlowLayout、GridLayout、GridBagLayout、CardLayout、BoxLayout、SpringLayout、GroupLayout等: 布局管理器种类 BorderLayout F
  • java常用组件以及布局管理器

    千次阅读 2015-01-29 20:48:55
    常用布局管理器: (这些布局管理器不可以人为调整组件的大小,组件的大小是根据容器的大小自动选择合适的大小) 1. FlowLayout,组件像水流一样向某方向移动,JPanel默认使用FlowLayout布局管理器(不...
  • Android 布局管理器

    千次阅读 2020-02-01 17:13:35
    5种常用布局管理器: RelativeLayout,相对布局管理器 LineraLayout,线性 FrameLayout,帧 TableLayout,表格 GridLayout,网格 一、相对布局管理器 适用于:可以根据组件间的相对位置来摆放时。 ...
  • Java几个常用布局管理器

    千次阅读 2010-02-10 14:21:00
    Java几个常用布局管理器类:包类特点java.awtCardLayout将组件象卡片一样放置在容器中,在某一时刻只有一个组件可见java.awtFlowLayout将组件按从左到右而后从上到下的顺序依次排列,一行不能放完则折到下一行继续...
  • 用户界面设计之布局管理器

    千次阅读 2016-08-17 23:12:07
    Android中提供了线性布局管理器(LinearLayout)、表格布局管理器(TableLayout)、相对布局管理器RelativeLayout)、帧布局管理器(FrameLayout)和绝对布局管理器(AbsoluteLayout)5种,其中绝对布局管理器在Android2.0...
  • 文章目录android编程 第三讲 Android布局管理器约束布局管理器ConstraintLayout线性布局管理器LinearLayout表格布局管理器TableLayout帧布局管理器FrameLayout相对布局管理器RelativeLayout 约束布局管理器...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 101,056
精华内容 40,422
关键字:

常用的布局管理器