前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java学习之路:31.java常用布局管理器(绝对,流,边界,网格)

java学习之路:31.java常用布局管理器(绝对,流,边界,网格)

作者头像
花狗Fdog
发布2020-10-28 11:26:26
1.1K0
发布2020-10-28 11:26:26
举报
文章被收录于专栏:花狗在Qt

1.绝对布局

绝对布局,就是可以硬性指定组件在容器中的位置和大小,使用绝对坐标来指定组件的位置与大小。 步骤如下: (1)使用Container.setLayout(null)方法取消布局管理器。 (2)使用Component.setBounds()方法设置每个组件的大小与位置。

代码语言:javascript
复制
package number;
import java.awt.*;
import javax.swing.*;
public class c1 extends JFrame {
 public void windows() {
  JFrame jf =new JFrame("本窗口使用绝对布局");  
  //jf.setTitle("不好");  上面和这句都是用来设置标题。
  jf.setLayout(null);//使窗体取消布局管理器设置
  jf.setBounds(700,300,300,300);
  //4个参数分别为x,y,width,height   x,y代表窗体左上角出现的位置,width,height代表这个窗体的宽与长
  Container container =jf.getContentPane();
  JButton b1 =new JButton("按钮1");
  JButton b2 =new JButton("按钮2");  //创建按钮
  b1.setBounds(10,30,80,30);
  b2.setBounds(60,70,100,20);   //按钮位置
  container.add(b1);
  container.add(b2);//将按钮添加到容器
  jf.setVisible(true);
  jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//设置窗体关闭方式
 }
 public static void main(String[] args) {
  new c1().windows();
 }
}
在这里插入图片描述
在这里插入图片描述

2.流布局管理器

整个容器中的布局像“流“一样从左到右摆放组件,直到占据了这一行的所有空间,然后再向下移动一行。

FlowLayout中的第一个参数表示组件在每一行的具体摆放位置,可以有三种,值分别为:

  1. 0:左对齐
  2. 1:居中
  3. 2:右对齐

后面两个参数分别以像素为单位指定组件之间的水平间隔和垂直间隔。

代码语言:javascript
复制
package number;
import java.awt.*;
import javax.swing.*;
public class liu extends JFrame {
 public void windows() {
  JFrame jf=new JFrame("流布局");
  Container container =jf.getContentPane();
  jf.setLayout(new FlowLayout(1,10,10));
  for(int i=0;i<10;i++) {
   container.add(new JButton("按钮"+i));
  }
  jf.setVisible(true);
  jf.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
  jf.setSize(500,500);
 }
 public static void main(String[] args) {
    new liu().windows();
 }
}
在这里插入图片描述
在这里插入图片描述

2.边界布局管理器

在默认不指定窗体布局的情况下,Swing组件的布局模式是边界布局管理器,如果在容器中只添加了一个标签组件,这个标签将被放置在窗体中间,而且整个组件占据窗体的所有空间,边界布局管理器还可以将容器划分为东,南,西,北,中五个区域,可以将组件加入到这五个区域,区域的控制可以由BorderLayout类中的成员变量来决定,这些成员变量的具体含义如下:

成员变量

含义

BorderLayout.CENTER

在容器添加组件时,组件位于顶端

BorderLayout.NORTH

在容器添加组件时,组件位于底端

BorderLayout.SOUTH

在容器添加组件时,组件位于右端

BorderLayout.WEST

在容器添加组件时,组件位于左端

BorderLayout.EAST

在容器添加组件时,组件位于中间开始填充,直到与其他组件边界连接

代码语言:javascript
复制
package number;
import java.awt.*;
import javax.swing.*;
public class bianjian extends JFrame {
   //定义组件摆放位置的数组
 String border[]= {BorderLayout.CENTER,
   BorderLayout.NORTH,BorderLayout.SOUTH,
   BorderLayout.WEST,BorderLayout.EAST};
 String buttonName[]= {"按钮1","按钮2","按钮3","按钮4",
   "按钮5","按钮6","按钮7","按钮8"};
 public bianjian() {
  setTitle("边界布局");
  Container container =getContentPane();
  setLayout(new BorderLayout());
  for(int i=0;i<border.length;i++) {
   container.add(border[i],new JButton(buttonName[i]));
  }
  setVisible(true);
  setSize(350,200);
  setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
 }
 public static void main(String[] args) {
new bianjian();
 }
}
在这里插入图片描述
在这里插入图片描述

2.网格布局管理器

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

代码语言:javascript
复制
package number;
import java.awt.*;
import javax.swing.*;
public class wangluo extends JFrame {
   public void wind() {
    JFrame jf =new JFrame("网络布局");
    Container c =jf.getContentPane();
    jf.setLayout(new GridLayout(7,3,5,5));
    for(int i=0;i<20;i++) {
     c.add(new JButton("button"+i));
    }
    jf.setSize(300,300);
    jf.setVisible(true);
    jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
   }
 public static void main(String[] args) {
new wangluo().wind();
 }
}
在这里插入图片描述
在这里插入图片描述

5.资源

这里写的方法有限,如果还想了解更多,可以查看javaSE文档,还有些小伙伴可能需要这个录制动态图的软件:LICEcap.exe 文档以及工具

若有错误,欢迎指正批评,欢迎评论。 每文一句:凡事都是试一试,就是不能证明我可以,也要证明我不可以。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/02/25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.绝对布局
  • 2.流布局管理器
  • 2.边界布局管理器
  • 2.网格布局管理器
  • 5.资源
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档