热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

JAVAswing布局管理器实例解析

这篇文章主要介绍了JAVAswing布局管理器实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

组件在容器(比如Jframe)中的位置和大小是由布局管理器来决定的。所有的容器都会使用一个布局管理器,通过它来自动进行组件的布局管理。

种类

java共提供了五种布局管理器,只介绍三种是最常见的布局管理器。

边界布局BorderLayout

边界布局将容器简单的划分为东南西北中5个区域,中间区域最大。JFrame、JDialog默认布局就是BorderLayout。

/*
 * 作者:白客C
 * 时间:2020年03月05日
 * 内容:gui窗体
 * 步骤:
 * 1.继承JFrame
 * 2.定义你需要的组件
 * 3.创建组件
 * 4.添加组件
 * 5.对窗体设置
 */

package com.beekc.www;
import java.awt.*;
import javax.swing.*;

//继承JFrame
public class Beekc extends JFrame{
  //定义需要的组件
  JButton jb1,jb2,jb3,jb4,jb5;

  public static void main(String[] args){
    Beekc beekc = new Beekc();
  }

  //构造函数
  public Beekc(){
    //创建组件
    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

FlowLayout布局,按照组件的添加次序将按按钮组件(当然也可以是别的组件)从左到右放置在容器的边界时,组件将放置在下一行中,FlowLayout可以左对齐、剧中、右对齐的方式排列组件。

注意事项

  Ⅰ.不限制他所管理的组件大小,允许他们有最佳大小

  Ⅱ.当容器被缩放时,组件的位置可能变化,但组件的大小不变

  Ⅲ.默认组件是居中对齐,可以通过FlowLayout(int align) 函数来指定对齐方式

/*
 * 作者:白客C
 * 时间:2020年03月05日
 * 内容:gui窗体
 * 步骤:
 * 1.继承JFrame容器
 * 2.定义你需要的组件
 * 3.创建组件
 * 4.添加组件
 * 5.对窗体设置
 * 6.显示
 */

package com.beekc.www;
import java.awt.*;
import javax.swing.*;

//继承JFrame
public class Beekc extends JFrame{

  //定义组件
  JButton jb1,jb2,jb3,jb4,jb5,jb6;

  public static void main(String[] args){
    Beekc beekc = new Beekc();
  }

  //构造函数
  public Beekc(){
    //创建组件
    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);

    //设置布局管理器
    //FlowLayout.CENTER 居中对齐
    this.setLayout(new FlowLayout(FlowLayout.CENTER));

    //设置窗体
    this.setTitle("流式布局案例");
    this.setSize(300,110);
    //禁止用户改变窗体大小
    this.setResizable(false);
    this.setLocation(200,200);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    //显示窗体
    this.setVisible(true);
  }

}

运行结果

网格布局GridLayout

GirdLayout布局就是将容器分割成多行多列,组件被填充到每个网格中,添加到容器的组件首先放置在左上角的网格中,然后从左到右放置其它的组件,当占满该行的所有网格后,接着继续在下一行从左到右放置组件。

/*
 * 作者:白客C
 * 时间:2020年03月05日
 * 内容:gui窗体
 * 步骤:
 * 1.继承JFrame容器
 * 2.定义你需要的组件
 * 3.创建组件
 * 4.添加组件
 * 5.对窗体设置
 * 6.显示
 */

package com.beekc.www;
import java.awt.*;
import javax.swing.*;

//继承JFrame
public class Beekc extends JFrame{

  //定义组件
  int size = 9;
  JButton[] jb = new JButton[size];


  public static void main(String[] args){
    Beekc beekc = new Beekc();
  }

  //构造函数
  public Beekc(){
    //创建组件
    for(int i = 0 ; i 

运行结果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


推荐阅读
  • 深入解析Docker镜像的工作机制
    本文旨在深入探讨Docker镜像的内部结构及其工作机制,包括镜像的分层体系、联合文件系统(UnionFS)的应用,以及各层如bootfs和rootfs的具体作用。 ... [详细]
  • 本文探讨了如何通过一系列技术手段提升Spring Boot项目的并发处理能力,解决生产环境中因慢请求导致的系统性能下降问题。 ... [详细]
  • Eclipse 中 JSP 开发环境配置指南
    本文详细介绍了如何在 Eclipse 集成开发环境中配置 JSP 运行环境,包括必要的软件下载、Tomcat 服务器的配置以及常见问题的解决方法。 ... [详细]
  • 本文详细介绍了Java集合框架中的Collection体系,包括集合的基本概念及其与数组的区别。同时,深入探讨了Comparable和Comparator接口的区别,并分析了各种集合类的底层数据结构。最后,提供了如何根据需求选择合适的集合类的指导。 ... [详细]
  • JESD204C 入门:第2部分新特性及其内容
    本文内容来自ADI的技术文章,作者:DelJones原网址为:https:www.analog.comcnanalog-dialoguea ... [详细]
  • 本文详细介绍了如何正确安装Java EE SDK,并解决在安装过程中可能遇到的问题,特别是关于servlet代码在Apache Tomcat 10中无法运行的情况。 ... [详细]
  • 本文探讨如何利用Java反射技术来模拟Webwork框架中的URL解析过程。通过这一实践,读者可以更好地理解Webwork及其后续版本Struts2的工作原理,尤其是它们在MVC架构下的角色。 ... [详细]
  • 本文详细介绍了 Kubernetes 集群管理工具 kubectl 的基本使用方法,涵盖了一系列常用的命令及其应用场景,旨在帮助初学者快速掌握 kubectl 的基本操作。 ... [详细]
  • 本文探讨了Web开发与游戏开发之间的主要区别,旨在帮助开发者更好地理解两种开发领域的特性和需求。文章基于作者的实际经验和网络资料整理而成。 ... [详细]
  • 本文将指导您如何在Docker环境中高效地搜索、下载Redis镜像,并通过指定或不指定配置文件的方式启动Redis容器。同时,还将介绍如何使用redis-cli工具连接到您的Redis实例。 ... [详细]
  • Lua编程进阶:数组与迭代器详解
    本文深入探讨了Lua语言中的数组和迭代器,通过实例讲解了一维数组、多维数组的使用方法及迭代器的工作原理。 ... [详细]
  • 全能终端工具推荐:高效、免费、易用
    介绍一款备受好评的全能型终端工具——MobaXterm,它不仅功能强大,而且完全免费,适合各类用户使用。 ... [详细]
  • 容器与微服务基础:快速入门指南
    探索容器和微服务的基础知识,了解如何通过先进的应用性能管理(APM)工具提升监控效能。加入AppDynamics APM的导览,掌握容器与微服务实施及监控的最佳实践。 ... [详细]
  • Docker 自定义网络配置详解
    本文详细介绍如何在 Docker 中自定义网络设置,包括网关和子网地址的配置。通过具体示例展示如何创建和管理自定义网络,以及容器间的通信方式。 ... [详细]
  • 深入理解Docker网络管理
    本文介绍了Docker网络管理的基本概念,包括为什么需要Docker网络管理以及Docker提供的多种网络驱动模式。同时,文章还详细解释了Docker网络相关的命令操作,帮助读者更好地理解和使用Docker网络功能。 ... [详细]
author-avatar
静净精时
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有