JAVA的GUI(图形用户界面)由各种组件构成,主要分为AWT组件(java.awt)以及功能更强的Swing组件(javax.swing)两种。

组件可以分为容器组件和非容器组件。容器组件是指可以包含其他组件的组件,又分为顶层容器和一般用途容器。非容器组件则必须包含在容器中。

组件的布局,包含各组件的位置和大小,通常由布局管理器负责。每个容器,都有一个默认的布局管理器,可以通过容器的setLayout()方法改变容器的布局管理器。

接下来介绍一下Java提供的几个常用的布局管理器。

1.FlowLayout

定义在java.awt包中。布局方式为:将组件逐个放置在容器中的一行上,一行放满就另起一个新行。

构造方式有3种:

FlowLayout():默认,居中对齐,水平和垂直间距是5个像素。

FlowLayout(int align):align指定对齐方式,水平和垂直间距是5个像素。align的可取的值有FlowLayout.LEFT、FlowLayout.RIGHT、FlowLayout.CENTER。

FlowLayout(int align,int hgap,int vgap):align指定对齐方式,hgap指定水平间距,vgap指定垂直间距。

与其他布局管理器不同的是,FlowLayout不强行设定组件的大小,允许组件拥有自定义的尺寸。每个组件都有getPreferredSize()方法,容器的布局管理器会调用这一方法取得每个组件自定义的大小。

2.BorderLayout

定义在java.awt包中。是顶层容器(JFrame、JApplet、JDialog、JWindow)中内容窗格(Container contentPane,内容窗格获取方法getContentPane())的默认布局管理器。

提供了一种较为复杂的组件布局管理:将容器划分为5个区域,东(BorderLayout.NORTH)南(BorderLayout.SOUTH)西(BorderLayout.WEST)北(BorderLayout.EAST)中(BorderLayout.CENTER),每个区域可添加一组件。

构造方式有2种:

BorderLayout():默认,组件之间没有间距。

BorderLayout(int hgap,int vgap):指定水平间距(hgap),垂直间距(vgap)。

组件的添加:

组件必须通过add()方法加入到容器中的指定区域。默认放置在Center区域。

如果希望在某个区域显示多个组件,可以先在该区域放置一个内部容器,比如JPanel组件,然后将所需的多个组件放到JPanel中,再将其放到指定的区域。通过内部容器的嵌套可以构造复杂的布局。

3.GridLayout

定义在java.awt包中。布局为网格式,将容器划分成若干行乘若干列的网格,组件依次放入其中,每个组件占据一格。

构造方式有3种:

GridLayout():只有一行的网格,网格的列数根据实际需要变化。

GridLayout(int rows,int cols):指定行数(rows),列数(cols)。

GridLayout(int rows,int cols,int hgap, int vgap):指定行数(rows),列数(cols),指定水平间距(hgap),垂直间距(vgap)。

rows,cols可以为0(大小根据实际需要变动),但是不可同时为0。网格每列的宽度都是相同的,网格每行的高度也是相同的。组件被放入容器的次序决定位置,从左至右依次填充,一行用完后转入下一行。留白可以添加一个空白标签。

网格个数与组件个数的关系:多添少补(空白标签)。

容器大小改变,组件相对位置不变,大小随之改变。

4.CardLayout

定义在java.awt包中。布局为卡片式,将容器处理为一系列的卡片,每一时刻只显示其中的一张,容器充当卡片的容器。

显示规则为先进先显示。卡片的顺序由组件对象本身在容器内部的顺序决定。

构造方式有2种:

CardLayout():默认,无间距。

CardLayout(int hgap,int vgap):指定水平间距(hgap),指定垂直间距(vgap)。

常用方法:

add():容器添加组件。

public void first(Container parent):翻转到容器的第一张。

public void next(Container parent):翻转到容器的下一张。到底则翻首张。

public void previous(Container parent):翻转到容器的前一张。到头则翻末张。

public void last(Container parent):翻转到容器的最后一张。

public void show(Container parent, String name):翻转已添加的指定name卡片。不存在则没有反应。

5.BoxLayout

定义在javax.swing包中。布局方式为:将组件按水平方向排成一行,或者按垂直方向排成一列。

排成一行每个组件可以有不同的宽度;排成一列每个组件可以有不同的高度。

构造方法只有1种:

BoxLayout(Container target,int axis):容器对象参数target指定要应用布局的容器,axis设置按水平方向排列(BoxLayout.X_AXIS)或按垂直方向排列(BoxLayout.Y_AXIS)。

在javax.swing包中定义了专门使用BoxLayout的容器——Box类。

创建Box静态方法:

public static BoxcreateHorizontalBox():水平方向的BoxLayout。

public static BoxcreateVertitcalBox():垂直方向的BoxLayout。

创建Box不可见组件的方法:

作用是可以增加课件组件之间的距离。

public static Componet createHorizonalGlue()。

public static Componet createVerticalGlue()。

public static Componet createHorizonalStrut(int width)。

public static Componet createVerticalStrut(int height)。

public static Componet createRigidArea(Dimension d)。

6.空布局

特殊场合可以不适用布局管理器。

调用容器的setLayout(null)将布局管理器设置为空,然后调用组件的setBounds(int x, int y, int width, int height)设置组件大小位置。

java gui 布局 旋转_JAVA GUI编程之布局管理器相关推荐

  1. java gui是什么_Java GUI编程(一)

    ********************第16章 GUI编程 ************************** 一.什么是GUI GUI= Graphical User Interface 图形用 ...

  2. java上下左中右的布局面板_JAVA GUI重要知识点学习心得

    本人最近学习javaGUI发现重要知识点和思想用的频率很高,把它们整理下来一起分享 1:JFrame窗口和JDialog窗口 一班JFrame用作主窗口,JDialog用作弹出窗口(即对话框),但JF ...

  3. java gui有哪些_Java GUI简介

    Java有2个GUI库:AWT.Swing. AWT是SUN最早提供的GUI库,依赖本地平台,界面不好看,功能有限.之后推出了Swing,Swing并没有完全替代AWT,而是建立在AWT基础上的.Sw ...

  4. java mysql查询界面_Java GUI小程序 实现数据库查询界面-Go语言中文社区

    源代码如下:package 数据库图形化界面3; import java.awt.*; import javax.swing.*; import java.awt.event.*; public cl ...

  5. java swing界面工具_Java GUI swing 工具包使用总结

    前言 最近用 swing 写了一个GUI图片接入的工具, 方便用于将图片数据通过接口推送到 web 项目中 做界面有点像写原生的 CSS 技术储备 java 基础知识, 面向对象封装, 继承, 接口, ...

  6. java paint的使用_java GUI编程之paint绘制操作示例

    本文实例讲述了java GUI编程之paint绘制操作.分享给大家供大家参考,具体如下: import java.awt.*; public class Testpint { public stati ...

  7. java gui 窗口 传值_java – GUI – 在不同窗口之间传输数据(J...

    我已经开始使用bash脚本以及一些java(控制台)和python来满足我的编程需求.想想我将工作整理到某个图形环境的时候,我偶然发现了一个基本的任务,让我现在几个小时都挂了. main函数在启动主应 ...

  8. java gui 按键 数组_java GUI分配数组值

    好的,所以这是一个非常基本的例子.它需要更多的工作和优化,但应该让你朝着正确的方向前进 import java.awt.Color; import java.awt.Dimension; import ...

  9. java gui 跳转_java GUI点击一个按钮怎么跳转到下一个窗口

    想从登录的窗口跳转到注册的窗口,这样写点击注册为什么不跳转packageview;importjava.awt.GridLayout;importjava.awt.event.ActionEvent; ...

最新文章

  1. 干货丨深度学习初学者必读:究竟什么是张量?
  2. python_bomb----函数高级特性(生成器)
  3. mysql创建与更新时间字段
  4. HTTP 三次握手  建立连接 和  四次握手断开连接
  5. 【Vue】 Error with Vue lazy loading components: “Failed to resolve async component“
  6. Reasoning about Entailment with Neural Attention-学习笔记
  7. phoenix hbase java_java jdbc访问hbase phoenix
  8. [BZOJ] 1025 [SCOI2009]游戏
  9. Centos 添加swap
  10. Opengl 好的文章和博客地址
  11. 《时空幻境》Braid.v1.010.r2-RES-patch
  12. asp.net基于net的体检信息管理系统-计算机毕业设计
  13. matlab中subs怎么用,【转】MATLAB中subs函数效率低
  14. Spring 全家桶,永远滴神
  15. 什么是NVMe硬盘?
  16. 数据挖掘经典十大算法_对基本概念的理解
  17. Tesla Model S的设计失误
  18. Sql语句操作数据库(修改表,修改数据库)
  19. html代码的魔方加密,魔方加密解密测试调试方法
  20. 报名系统网页导出html,【网页报名表如何导出pdf】_网页的报名表怎样转换为word或者PDF格式...

热门文章

  1. 有关linux的GPG签名验证错误的解决方法。
  2. 未能加载文件或程序集“Newtonsoft.Json”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)
  3. 启动mysql5.7异常The server quit without updating PID file [FAILED]sql/data/***.pi根本解决方案
  4. 什么时候使用Task.Delay,什么时候使用Thread.Sleep?
  5. 我应该如何验证电子邮件地址?
  6. HTML复选框可以设置为只读吗?
  7. 去除主页ImageView图片的上下空白
  8. markdown引入代码_将Swagger2文档导出为HTML或markdown等格式离线阅读
  9. 电脑刷机重装系统_一键刷机工具
  10. 固定定位(HTML、CSS)