JAVA的界面格局原理:因为Java是跨平台语言,利用绝对坐标明显会导致问题,即在不同平台、不同判别率下的揭示收获不一样。Java

为了告终跨平台的个性并且获得动态的格局收获,Java将容器内的所有组件安排给一个“格局管教器”负责管教,如:编排次序,组件的大小,位置等,当窗口挪动或调剂大小后组件如何改变等功能授权给对应的容器格局管教器来管教,不同的格局管教器利用不同算法和计策,容器能够穿越抉择不同的格局管教器来定夺格局。

Java中一共同6种格局管教器,穿越利用6种格局管教器组合,能够设计出混杂的界面,而且在不同垄断系统平台上都能够有统一的揭示界面。6种格局管教器离别是BorderLayout、BoxLayout、FlowLayout、GirdBagLayout、GirdLayout和

CardLayout。其中CardLayout定然和其他5种配合利用,不是尤其常用的。每种界面管教器各司其职,都有各自的作用。

CardLayout(卡式格局)

CardLayout格局管教器能够帮助用户处理两个以至更多的成员分享统一揭示空间,它把容器分成众多层,每层的揭示空间割据全副容器的大小,然而每层只批准放置一个组件,当然每层都能够利用Panel来告终混杂的用户界面.格局管教器(CardLayout)就象一副叠得整齐整齐的扑克牌一样,有54张牌,然而你只能目睹最上面的一张牌,每一张牌就相当于格局管教器中的每一层.其告终过程如下:

率先,定义面板,为个个面板设置不同的格局,并依据必需在每个面板中放置组件:

panelOne.setLayout(newFlowLayout);

panelTwo.setLayout(newGridLayout(2,1));

再设置主面板.

CardLayoutcard=newCardLayout();

panelMain.setLayout(card);

下一步将开始准备好的面板增加到主面板

panelMain.add("redpanel",panelOne);

panelMain.add("bluepanel",panelOne);

add()措施带有两个参数,第一个为String种类用来表示面板题目,第二个为Panel对象名目.

告终以上环节尔后,定然给用户供给在卡片之间举行抉择的措施.一个常用的措施是每张卡片都包括一个按钮.等闲用来扼制揭示哪张面板.actionListener被增加到按钮..actionPerformed()措施可定义揭示哪张卡片.:

card.next(panelMain);//下一个

card.previous(panelMain);//前一个

card.first(panelMain);//第一个

card.last(panelMain);//最后一个

card.show(panelMain,"redpanel");//特定面板

BorderLayout格局管教器:BorderLayout

也是一种极其容易的格局计策,它把容器内的空间容易地划分为东、西、南、北、中无个区域,没加入一个组件都该当指明把这个组件加在哪个区域中。

BorderLayout是顶层容器( JFrame, JDialog, 和 JApplet

)的默认格局管教器。有五个位置组件:

这个界面最多只能揭示5个控件。加入控件的时候,能够指定加入的方位,默认的情形是加入到其中。在BorderLayout中整理尺寸是,方圆的控件会被调剂,调剂会按照格局管教器的内部法定计算出该当占多少位置,然后其中的组件会占去剩下的空间。

BorderLayout是Window,Frame和Dialog的缺省格局管教器.

BorderLayout格局管教器把容器分成5个区域:North,South,East,West和Center,每个区域只能放置一个组件.在利用

BorderLayout的时候,万一容器的大小发生改变,其改变规律为:组件的相对位置不变,大小发生改变.例如容器变高了,则North、South

区域不变,West、Center、East区域变高;万一容器变宽了,West、East区域不变,North、Center、South区域变宽.无须定所有的区域都有组件,万一方圆的区域(West、East、North、South区域)未曾组件,则由Center区域去赔偿,然而万一

Center区域未曾组件,则坚持空白.

示例:

importjava.awt.*;

publicclassbuttonDir{

publicstaticvoidmain(Stringargs[]){

Framef=newFrame("BorderLayout");

f.setLayout(newBorderLayout());

f.add("North",newButton("North");

//第一个参数表示把按钮增加到容器的North区域

f.add("South",newButton("South");

//第一个参数表示把按钮增加到容器的South区域

f.add("East",newButton("East");

//第一个参数表示把按钮增加到容器的East区域

f.add("West",newButton("West");

//第一个参数表示把按钮增加到容器的West区域

f.add("Center",newButton("Center");

//第一个参数表示把按钮增加到容器的Center区域

f.setSize(200,200);

f.setVisible(true);

}

}

FlowLayout格局管教器:流式格局管教器把容器当做一个行集,好象平时在一张纸上写字一样,一行写满就换下一行。行高是用一行中的控件高度定夺的。FlowLayout是所有

JApplet/JApplet的默认格局。在生成流式格局时能够指定揭示的对齐措施,默认情形下是居中(FlowLayout.CENTER)。在下面的示例中,能够用如下语句指定居左

JPanel panel= new JPanel(new FlowLayout(FlowLayout.LEFT)));

此为薄利用过程(Applet)和面板(Panel)的缺省格局管教器,组件从左上角开始,按从左至右的措施编排.其构造函数为:

FlowLayout()//生成一个默认的流式格局,组件在容器里居中,每个组件之间留下5个像素的距离.

FlowLayout(intalinment)//能够设定每行组件的对齐措施.

FlowLayout(intalignment,inthorz,intvert)//设定对齐措施并设定组件程度和垂直的距离.

当容器的大小发生改变时,用FlowLayout管教的组件会发生改变,其改变规律是:组件的大小不变,然而相对位置会发生改变.

GirdLayout格局管教器:GridLayout

将成员按网格型编排,每个成员尽可能地割据网格的空间,每个网格也同样尽可能地割据空间,从而各个成员按定然的大小比例放置。万一你改换大小,

GridLayout将相应地改换每个网格的大小,以使各个网格尽可能地大,割据Container容器全副的空间。

大约格局计策是把容器的空间划分成若干行乘若干列的网格区域,组件就位于这些划分出来的小区域中,所有的区域大小一样。组件按从左到右,从上到下的措施加入。

用构造函数划分出网格的行数和列数,

new GridLayout(行数,列数);

构造函数里的行数和列数能够有一个为零,然而不能都为零。当容器里添置控件时候,容器内将向0的那个方向增长。例如,万一是如下语句:

GridLayout layout= new GridLayout(0,1);

在添置控件时,会坚持一个列的情形下,不时把行数增长。

java.awt.GridBagConstraints

中的insets(0,助听器0,0,0)的参数翔实指的是:

法定一个控件揭示区的空白区。万一控件揭示的inset为(10,5,20,0)

那么控件到揭示区北边距离为10,西边为5,南边为20,东边为0控件会比揭示区小。万一inset为负,控件会超过揭示区

使容器中各个组件呈网格状格局,平衡割据容器的空间.当所有组件大小雷同时,利用此格局.其构造函数为:

GridLayout()

GridLayout(introw,intcol)

GridLayout(introw,intcol,inthorz,intvert)

BoxLayout格局管教器:

BoxLayout格局能够批准将控件按照X轴(从左到右)可能Y轴(从上到下)方历来摆放,而且沿着主轴能够设置不同尺寸。

构造BoxLayout对象时,有两个参数,例如:

Public BoxLayout(Container target,int axis);

Targe参数是表示目前管教的容器,axis是指哪个轴,有两个值??BoxLayout.X_AXIS和BoxLayout.Y_AXIS。

看如下的代码:

JPanel jpanel=new JPanel();

Jpanel.setLayout(new

BoxLayout(jpanel,BoxLayout.Y_AXIS);

TextArea testArea=new TextArea(4,20);

JButton button=new JButton(“this

is a button”);

jpanel.add(testArea);

jpanel.add(button);

//接受testArea和button的容器,对他们沿Y轴(从上往下)放置,并且文本域和按纽左对齐。也即便两个控件的最左端在统一条线上

testArea.setAlignmentX(Component.LEFT_ALIGNMENT);

button.

setAlignmentX(Component.LEFT_ALIGNMENT);

//接受testArea和button的容器,对他们批准沿Y轴(从上往下)放置,并且文本域最左端和按纽的最右端在统一条线上

testArea.setAlignmentX(Component.LEFT_ALIGNMENT);

button.

setAlignmentX(Component.RIGHT_ALIGNMENT);

setAlignmentX(left,right)只有在格局是BoxLayout.Y_AXIS才效,而setAlignmentY(top,button)在格局为BoxLayout.X_AXIS才收获。

组件对齐等闲来说:

所有top-to-bottom BoxLayout object 该当有雷同的 X alignment。

所有left-to-right Boxlayout该当有雷同的 Y alignment

setAlignmentX 和setAlignmentY 能够告终对齐。

GridBagLayout格局管教器:

这即便最混杂的一个格局管教器了,网格包格局.在此格局中,组件大小无须雷同.

GridBagLayoutgb=newGridBagLayout();

ContainerName.setLayout(gb);

以上代码是让容器获得一个GridBagLayout.

要利用网格包格局,还定然有其一个帮助类,GridBagContraints.它包括GridBagLayout类用来定位及调剂组件大小所必需的全副消息.利用环节如下:

1).创立网格包格局的一个实例,并将其定义为目前容器的格局管教器.

2).创立GridBagContraints的一个实例

3).为组件设置局限.

4).穿越措施统治格局管教器有关组件及其局限等消息

5).将组件增加到容器.

6).对各个将被揭示的组件重复以上环节..

GridBagContraints类的成员变量列表如下:

1).gridx,gridy

指定组件放在哪个单元中.其值该当设为常数CridBagConstraints.RELATIVE.然后按规范次序将组件加入网格包格局.从左到右,从上到下.

2).gridwidth,gridheight

指定组件将挪借几行几列

3).weightx,weighty

指定在一个GridBagLayout中应如何分配空间.缺省为0.

4).ipadx,ipady

指定组件的最小宽度和高度.可确保组件不会过度收缩.

5).fill

指定在单元大于组件的情形下,组件如何添补此单元..缺省为组件大小不变.以下为静态数据成员列表,它们是fill变量的值.

GridBagConstraints.NONE不改换组件大小

GridBagConstraints.HORIZONTAL添置组件宽度,使其程度添补揭示区域

GridBagConstraints.VERTICAL添置组件高度,使其垂直添补揭示区域

GridBagConstraints.BOTH使组件添补全副揭示区域

6).anchor

万一不计划添补能够穿越anchor指定将组件放置在单元中的位置,缺省为将其放在单元的中部.可利用以下静态成员:

GridBagConstraints.CENTER

GridBagConstraints.NORTH

GridBagConstraints.EAST

GridBagConstraints.WEST

GridBagConstraints.SOUTH

GridBagConstraints.NORTHEAST

GridBagConstraints.SOUTHEAST

GridBagConstraints.NORTHWEST

GridBagConstraints.SOUTHWEST

利用setConstraints()措施能够设置各组件局限.

GridBagLayout是是在GridLayout的基础上进展起来的,是五种格局计策中利用最混杂,功能最壮大的一种,它是在GridLayout的基础上进展起来的。因为GridBagLayout中每个网格都雷同大小并且迫使组件与网格大小雷同,使得容器中的每个组件也都是雷同的大小,显得很不慷慨,而且组件假定容器中定然按照安宁的行列次序,不够灵便。在GridBagLayout中,可感受每个组件指定其包括的网格个数,组件能够保留本来的大小,能够以任意次序容易地加入容器的任意位置,从而告终恳挚自由地安排容器中每个组件的大小和位置。

穿越创立一个gridBagConstraints实例为组件设置格局参数:

gridx, gridy

gridwidth, gridheight

fill

ipadx, ipady

insets

anchor

CENTER (the default), NORTH, NORTHEAST, EAST, SOUTHEAST, SOUTH,

SOUTHWEST, WEST, and NORTHWEST.

weightx, weighty

变量名

管用值

利用范围

定义

anchor

CENTER

EAST

NORTH

NORTHEAST

SOUTH

SOUTHWEST

WEST

组件

组件在网格中排泄的位置

fill

BOTH

HORIZONTAL

VERTICAL

NONE

组件

组件添补网格的措施

gridx,gridy

RELATIVE

整数X,Y值

组件和揭示区

组件的左上角网格的位置

gridheight

gridwidth

1

RELATIVE

REMAINDER

宽,高度整数值

揭示区

网格单元中组件揭示区所占的高度和宽度

Insets

(0,0,0,0)

组件和揭示区

表面添补

ipadx,ipady

0

组件和揭示区

内部添补将对社会生态带来宏伟的波及。

java中的gridy_JAVA格局管教器.相关推荐

  1. 关于使用java中的ResourceBundle.getBundle资源管理器时遇到的找不到资源的问题

    关于使用java中的ResourceBundle.getBundle资源管理器时遇到的找不到资源的问题 使用ResourceBundle.getBundle资源管理器绑定 .properties文件时 ...

  2. java怎么设置卡片布局_在Java中使用卡片布局管理器的方法

    在Java中使用卡片布局管理器的方法 发布时间:2020-12-03 16:05:18 来源:亿速云 阅读:85 作者:Leah 在Java中使用卡片布局管理器的方法?针对这个问题,这篇文章详细介绍了 ...

  3. java 布局管理器_有时在Java中,一个布局管理器是不够的

    java 布局管理器 在开发Java Swing应用程序时,最经常的是,我们需要在多个嵌套面板中使用多个布局管理器. 这通常不是问题,被认为是几乎所有人类已知语言的所有UI开发的常规做法. 但是,大多 ...

  4. 有时在Java中,一个布局管理器是不够的

    在开发Java Swing应用程序时,最经常的是,我们需要在多个嵌套面板中使用多个布局管理器. 通常这不是问题,并且被认为是几乎所有人类已知语言的所有UI开发的常规做法. 但是,大多数情况下,对于UI ...

  5. Java中的过滤器和拦截器

    一.简介 1.什么是拦截器? (1)在AOP中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作.拦截是AOP的一种实现策略. (2)拦截器是动态拦截Action调用的对象.它提供了 ...

  6. 【Java】Java中GUI之布局管理器

    [概念] 布局管理器:是对容器中的元素进行布局管理,按照一定的规则将容器里面的元素或组件进行排放. [分类] 1.FlowLayout:流式布局管理器 2.BorderLayout:边框布局管理器 3 ...

  7. java中什么是布局管理器_Java中布局管理器

    布局管理器种类 FlowLayout: 组件在一行中从左至右水平排列,排满后折行,它是Panel.Applet的默认布局管理器. BorderLayout:北.南.东.西.中,它是Window.Fra ...

  8. java中的gridy_Java GridBagConstraints gridx和gridy无法正常工作?

    我正在尝试使用gridx和gridy约束来定位我的按钮.但是它们不起作用!如果更改gridx和gridy变量,则什么也不会发生.如果我将填充更改GridBagConstraints为NONE,它仍然不 ...

  9. 【java虚拟机系列】JVM类加载器与ClassNotFoundException和NoClassDefFoundError

    在我们日常的项目开发中,会经常碰到ClassNotFoundException和NoClassDefFoundError这两种异常,对于经验足够的工程师而言,可能很轻松的就可以解决,但是却不一定明白为 ...

最新文章

  1. Python Pyc文件
  2. 窗口移到屏幕边上拉不出来解决办法
  3. Web最基本的弹出窗口代码(javascript)
  4. 深入理解this和call、bind、apply对this的影响及用法
  5. BZOJ 1529: [POI2005]ska Piggy banks( 并查集 )
  6. 使用phpqrcode来生成二维码/thinkphp
  7. 自注意力机制_自注意力机制在计算机视觉中的应用【附PPT与视频资料】
  8. python数据抓取与实战_Python数据抓取技术与实战 pdf
  9. php不包含_php 正则 不包含某字符串的正则表达式
  10. 常用的Java虚拟机参数
  11. eclipse保护眼睛色设置
  12. 博弈论笔记:动态博弈
  13. 到底有多二:一个整数“犯二的程度”定义为该数字中包含2的个数与其位数的比值。
  14. 微信端浏览器不会自动播放视频音频
  15. 制作App,免编程积木式搭建如此之简单
  16. abb机器人常见维故障现象
  17. 磁盘分区怎么恢复回去
  18. spring-定时任务
  19. C3P0:C3P0PooledConnectionPoolManager
  20. 程序猿如何提高自己的搜索技能

热门文章

  1. VUE中出现 Cannot read property ‘length‘ of undefined 的错误
  2. c语言填空题题库6,二级C语言题库-填空题.doc
  3. Python3爬取影片入库
  4. Netty学习笔记(六) 简单的聊天室功能之WebSocket客户端开发实例
  5. SIM800C Couldn't pair with xxx because of an incorrect PIN or passkey
  6. TIOBE开发语言排行榜
  7. switch case里的变量生命周期
  8. maven 一个简单项目 —— maven权威指南学习笔记(三)
  9. Win XP文件夹拒绝访问的解决方法 - 年轻无极限 - 51CTO技术博客
  10. POJ 1797 Heavy Transportation