java gui 布局 旋转_JAVA GUI编程之布局管理器
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编程之布局管理器相关推荐
- java gui是什么_Java GUI编程(一)
********************第16章 GUI编程 ************************** 一.什么是GUI GUI= Graphical User Interface 图形用 ...
- java上下左中右的布局面板_JAVA GUI重要知识点学习心得
本人最近学习javaGUI发现重要知识点和思想用的频率很高,把它们整理下来一起分享 1:JFrame窗口和JDialog窗口 一班JFrame用作主窗口,JDialog用作弹出窗口(即对话框),但JF ...
- java gui有哪些_Java GUI简介
Java有2个GUI库:AWT.Swing. AWT是SUN最早提供的GUI库,依赖本地平台,界面不好看,功能有限.之后推出了Swing,Swing并没有完全替代AWT,而是建立在AWT基础上的.Sw ...
- java mysql查询界面_Java GUI小程序 实现数据库查询界面-Go语言中文社区
源代码如下:package 数据库图形化界面3; import java.awt.*; import javax.swing.*; import java.awt.event.*; public cl ...
- java swing界面工具_Java GUI swing 工具包使用总结
前言 最近用 swing 写了一个GUI图片接入的工具, 方便用于将图片数据通过接口推送到 web 项目中 做界面有点像写原生的 CSS 技术储备 java 基础知识, 面向对象封装, 继承, 接口, ...
- java paint的使用_java GUI编程之paint绘制操作示例
本文实例讲述了java GUI编程之paint绘制操作.分享给大家供大家参考,具体如下: import java.awt.*; public class Testpint { public stati ...
- java gui 窗口 传值_java – GUI – 在不同窗口之间传输数据(J...
我已经开始使用bash脚本以及一些java(控制台)和python来满足我的编程需求.想想我将工作整理到某个图形环境的时候,我偶然发现了一个基本的任务,让我现在几个小时都挂了. main函数在启动主应 ...
- java gui 按键 数组_java GUI分配数组值
好的,所以这是一个非常基本的例子.它需要更多的工作和优化,但应该让你朝着正确的方向前进 import java.awt.Color; import java.awt.Dimension; import ...
- java gui 跳转_java GUI点击一个按钮怎么跳转到下一个窗口
想从登录的窗口跳转到注册的窗口,这样写点击注册为什么不跳转packageview;importjava.awt.GridLayout;importjava.awt.event.ActionEvent; ...
最新文章
- 干货丨深度学习初学者必读:究竟什么是张量?
- python_bomb----函数高级特性(生成器)
- mysql创建与更新时间字段
- HTTP 三次握手 建立连接 和 四次握手断开连接
- 【Vue】 Error with Vue lazy loading components: “Failed to resolve async component“
- Reasoning about Entailment with Neural Attention-学习笔记
- phoenix hbase java_java jdbc访问hbase phoenix
- [BZOJ] 1025 [SCOI2009]游戏
- Centos 添加swap
- Opengl 好的文章和博客地址
- 《时空幻境》Braid.v1.010.r2-RES-patch
- asp.net基于net的体检信息管理系统-计算机毕业设计
- matlab中subs怎么用,【转】MATLAB中subs函数效率低
- Spring 全家桶,永远滴神
- 什么是NVMe硬盘?
- 数据挖掘经典十大算法_对基本概念的理解
- Tesla Model S的设计失误
- Sql语句操作数据库(修改表,修改数据库)
- html代码的魔方加密,魔方加密解密测试调试方法
- 报名系统网页导出html,【网页报名表如何导出pdf】_网页的报名表怎样转换为word或者PDF格式...
热门文章
- 有关linux的GPG签名验证错误的解决方法。
- 未能加载文件或程序集“Newtonsoft.Json”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)
- 启动mysql5.7异常The server quit without updating PID file [FAILED]sql/data/***.pi根本解决方案
- 什么时候使用Task.Delay,什么时候使用Thread.Sleep?
- 我应该如何验证电子邮件地址?
- HTML复选框可以设置为只读吗?
- 去除主页ImageView图片的上下空白
- markdown引入代码_将Swagger2文档导出为HTML或markdown等格式离线阅读
- 电脑刷机重装系统_一键刷机工具
- 固定定位(HTML、CSS)