- 浏览: 86568 次
- 性别:
- 来自: 上海
-
文章分类
最新评论
-
tianyaxue1987:
您好,最近有个项目要用到这个TableViewer,看了您的文 ...
表格(TableViewer类)(转) -
未来的梦:
不错,不错哦!!!
表格(TableViewer类)(转) -
legend26:
是str.equals()的吧?
判断String是否为空
http://blog.csdn.net/JavaTiger427/archive/2010/02/05/5290158.aspx
JAVA的界面布局原理:因为Java是跨平台语言,使用绝对坐标显然会导致问题,即在不同平台、不同分辨率下的显示效果不一样。Java 为了实现跨平台的特性并且获得动态的布局效果,Java将容器内的所有组件安排给一个“布局管理器”负责管理,如:排列顺序,组件的大小,位置等,当窗口移动或调整大小后组件如何变化等功能授权给对应的容器布局管理器来管理,不同的布局管理器使用不同算法和策略,容器可以通过选择不同的布局管理器来决定布局。 Java中一共有6种布局管理器,通过使用6种布局管理器组合,能够设计出复杂的界面,而且在不同操作系统平台上都能够有一致的显示界面。6种布局管理器分别是BorderLayout、BoxLayout、FlowLayout、GirdBagLayout、GirdLayout和 CardLayout。其中CardLayout必须和其他5种配合使用,不是特别常用的。每种界面管理器各司其职,都有各自的作用。 首先,定义面板,为个个面板设置不同的布局,并根据需要在每个面板中放置组件: 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区域没有组件,则保持空白. 流式布局管理器把容器看成一个行集,好象平时在一张纸上写字一样,一行写满就换下一行。行高是用一行中的控件高度决定的。FlowLayout是所有 JApplet/JApplet的默认布局。在生成流式布局时能够指定显示的对齐方式,默认情况下是居中(FlowLayout.CENTER)。在下面的示例中,可以用如下语句指定居左 GridLayout 将成员按网格型排列,每个成员尽可能地占据网格的空间,每个网格也同样尽可能地占据空间,从而各个成员按一定的大小比例放置。如果你改变大小, GridLayout将相应地改变每个网格的大小,以使各个网格尽可能地大,占据Container容器全部的空间。 基本布局策略是把容器的空间划分成若干行乘若干列的网格区域,组件就位于这些划分出来的小区域中,所有的区域大小一样。组件按从左到右,从上到下的方法加入。 用构造函数划分出网格的行数和列数, 构造函数里的行数和列数能够有一个为零,但是不能都为零。当容器里增加控件时候,容器内将向0的那个方向增长。例如,如果是如下语句: GridLayout layout= new GridLayout(0,1); 在增加控件时,会保持一个列的情况下,不断把行数增长。 java.awt.GridBagConstraints 中的insets(0,0,0,0)的参数具体指的是: 使容器中各个组件呈网格状布局,平均占据容器的空间.当所有组件大小相同时,使用此布局.其构造函数为: 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才效果。 组件对齐一般来说: GridBagLayout(布局管理器) 这就是最复杂的一个布局管理器了,网格包布局.在此布局中,组件大小不必相同. GridBagContraints类的成员变量列表如下: 变量名 有效值 应用范围 定义 EAST NORTH anchor NORTHEAST 组件 组件在网格中排放的位置 SOUTH SOUTHWEST WEST BOTH HORIZONTAL fill VERTICAL 组件 组件填充网格的方式 NONE gridx,gridy RELATIVE 组件和显示区 组件的左上角网格的位置 整数X,Y值 1 gridheight RELATIVE 显示区 网格单元中组件显示区所占 gridwidth REMAINDER 的高度和宽度 宽,高度整数值 Insets (0,0,0,0) 组件和显示区 外部填充 ipadx,ipady 0 组件和显示区 内部填充
CardLayout(卡式布局)
CardLayout布局管理器能够帮助用户处理两个以至更多的成员共享同一显示空间,它把容器分成许多层,每层的显示空间占据整个容器的大小,但是每层只允许放置一个组件,当然每层都可以利用Panel来实现复杂的用户界面.布局管理器(CardLayout)就象一副叠得整整齐齐的扑克牌一样,有54张牌,但是你只能看见最上面的一张牌,每一张牌就相当于布局管理器中的每一层.其实现过程如下:
panelOne.setLayout(new FlowLayout);
panelTwo.setLayout(new GridLayout(2,1));
再设置主面板.
CardLayout card = new CardLayout();
panelMain.setLayout(card);
下一步将开始准备好的面板添加到主面板
panelMain.add("red panel",panelOne);
panelMain.add("blue panel",panelOne);
add()方法带有两个参数,第一个为String类型用来表示面板标题,第二个为Panel对象名称.
完成以上步骤以后,必须给用户提供在卡片之间进行选择的方法.一个常用的方法是每张卡片都包含一个按钮.通常用来控制显示哪张面板.actionListener被添加到按钮..actionPerformed()方法可定义显示哪张卡片.:
card.next(panelMain); //下一个
card.previous(panelMain); //前一个
card.first(panelMain); //第一个
card.last(panelMain); //最后一个
card.show(panelMain,"red panel"); //特定面板
示例:
import java.awt.*;
public class buttonDir{
public static void main(String args[]){
Frame f = new Frame("BorderLayout");
f.setLayout(new BorderLayout());
f.add("North", new Button("North");
//第一个参数表示把按钮添加到容器的North区域
f.add("South", new Button("South");
//第一个参数表示把按钮添加到容器的South区域
f.add("East", new Button("East");
//第一个参数表示把按钮添加到容器的East区域
f.add("West", new Button("West");
//第一个参数表示把按钮添加到容器的West区域
f.add("Center", new Button("Center");
//第一个参数表示把按钮添加到容器的Center区域
f.setSize(200,200);
f.setVisible(true);
}
}
FlowLayout(布局管理器)
JPanel panel= new JPanel(new FlowLayout(FlowLayout.LEFT)));
此为小应用程序(Applet)和面板(Panel)的缺省布局管理器,组件从左上角开始,按从左至右的方式排列.其构造函数为:
FlowLayout() //生成一个默认的流式布局,组件在容器里居中,每个组件之间留下5个像素的距离.
FlowLayout(int alinment) //可以设定每行组件的对齐方式.
FlowLayout(int alignment,int horz,int vert) //设定对齐方式并设定组件水平和垂直的距离.
当容器的大小发生变化时,用FlowLayout管理的组件会发生变化,其变化规律是:组件的大小不变,但是相对位置会发生变化.
GirdLayout(布局管理器)
new GridLayout(行数,列数);
规定一个控件显示区的空白区。如果控件显示的inset为(10,5,20,0)
那么控件到显示区北边距离为10,西边为5,南边为20,东边为0控件会比显示区小。如果inset为负,控件会超出显示区
GridLayout()
GridLayout(int row,int col)
GridLayout(int row,int col,int horz,int vert)
所有top-to-bottom BoxLayout object 应该有相同的 X alignment。
所有left-to-right Boxlayout应该有相同的 Y alignment
setAlignmentX 和setAlignmentY 可以实现对齐。
GridBagLayout gb=new GridBagLayout();
ContainerName.setLayout(gb);
以上代码是让容器获得一个GridBagLayout .
要使用网格包布局,还必须有其一个辅助类,GridBagContraints.它包含GridBagLayout类用来定位及调整组件大小所需要的全部信息.使用步骤如下:
1).创建网格包布局的一个实例,并将其定义为当前容器的布局管理器.
2).创建GridBagContraints的一个实例
3).为组件设置约束.
4).通过方法统治布局管理器有关组件及其约束等信息
5).将组件添加到容器.
6).对各个将被显示的组件重复以上步骤..
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
CENTER
发表评论
-
Java_Ant详解(一)
2011-01-17 23:23 732转自 http://apps.hi.baidu.com/sh ... -
Java与C#比较(转)
2010-11-11 22:07 1313http://blog.csdn.net/zhoufoxc ... -
Java运算符和优先级
2010-11-04 21:13 869优先级 运算符 结合性 1 () [] . ... -
堆(heap)与栈(stack)的区别
2010-10-02 15:19 872堆(heap)和栈(stack) 2007/11/17 ... -
set、List、map的区别(转)
2010-10-02 11:17 0List接口对Collection进行了简单的扩充,List代 ... -
Collection和Collections的区别[转]
2010-10-02 11:07 1199Collection是个java.util下的接口,它是各 ... -
比较Vector和ArrayList
2010-10-01 21:48 651要回答这个问题不能一概而论,有时候使用Vector比较好; ... -
int和Integer
2010-05-27 15:49 801nt 是基本类型,直接存 ... -
java中的int和char,string的转换
2010-04-24 22:33 3562int -> char: ... -
内存溢出java.lang.outofmemoryError:Java heap space
2009-07-01 09:54 911有2种可能导致OutOfMemoryE ... -
遍历HashMap
2009-04-23 17:04 2433可以通过2种方法遍历HashMap Map map = ne ... -
java 中四种xml解析方式
2009-04-13 13:45 882测试方法: 采用 JSP 端调用Bean(至于为什么采用J ... -
断网时用jdom读取hibernate.cfg.xml的错误
2009-04-01 22:30 1863利用jdom解析hibernate.cfg.xml,本来都是在 ... -
List转换成String数组;数组转换成List
2009-03-24 13:47 38541、List转换成String数组 方法一: L ... -
(转)java string的==操作
2009-03-22 23:28 853初学 Java 有段时间了, ... -
判断String是否为空
2009-03-16 23:20 1501String str; 的str.isEmpty()判断str ... -
java的访问控制符
2009-03-16 23:05 1225public 可以被所有其他类访问 private 只能被自身 ... -
String的replace()与replaceAll()
2009-03-16 21:05 1910replace和replaceAll是JAVA中常用的替换字符 ... -
String的substring函数
2009-03-16 20:16 947String url=""; String ...
相关推荐
java布局管理器测试代码,绝对能运行,环境为jdk1.6下
Java中的布局管理器是构建图形用户界面(GUI)的关键元素,它们负责自动调整和组织窗口内的组件。在Java AWT和Swing库中,布局管理器使得开发者无需精确设定每个组件的位置和大小,就能创建出适应不同屏幕尺寸和...
在Java的Swing库中,布局管理器是一个至关重要的组件,它负责自动调整GUI(图形用户界面)组件的位置和大小,以适应不同的屏幕尺寸和分辨率。`CardLayout`是Java中的一种特殊布局管理器,主要用于处理多面板的情况,...
Java Swing 布局管理器 Java Swing 中的布局管理器是指在 Swing 应用程序中对组件进行布局和排列的机制。布局管理器是容器中的组件进行定位和整形的关键组件。在 Java 中,AWT 提供了五种类型的布局管理器:...
首先,我们来看“JAVA布局管理器”。在Java Swing中,有多种内置的布局管理器,包括 FlowLayout、GridLayout、BorderLayout、CardLayout 和 GroupLayout。每个布局管理器都有其特定的排列规则: 1. FlowLayout:...
韩顺平java图形界面编程之常用组件、布局管理器
Java中的布局管理器是创建图形用户界面(GUI)时不可或缺的一部分,它们负责自动安排和调整组件在窗口或容器中的位置和大小。边界布局管理器(BorderLayout)是Java Swing提供的一种基本布局策略,它将容器划分为五...
这里我们将探讨Java布局管理器的基础知识以及与给定文件相关的可能内容。 首先,我们来了解几种主要的Java布局管理器: 1. **FlowLayout**:这是最简单的布局管理器,按照从左到右、从上到下的顺序排列组件。如果...
在Java GUI编程中,布局管理器是至关重要的组成部分,它负责控制组件在窗口中的位置和大小。本资源提供了五种常见的布局管理器的经典例子,帮助开发者更好地理解和运用这些管理器。下面将详细介绍这五种布局管理器...
java边界布局管理器小例 适合初学者,代码准确,难度适中
### Java常用布局管理器详解 在Java图形用户界面(GUI)设计中,布局管理器扮演着至关重要的角色。它们负责组织和排列容器内的组件,确保界面不仅美观,而且响应式,能够在不同屏幕尺寸和设备上正常工作。本文将深入...
AWT组件提供的6种布局管理器 AWT(Abstract Window Toolkit)组件提供了六种布局管理器,分别是BorderLayout、FlowLayout、GridLayout、GridBagLayout、CardLayout和BoxLayout。这些布局管理器可以帮助开发者更好地...
在Java中,GUI的设计和布局主要依赖于布局管理器,它们负责控制组件(如按钮、文本框等)在窗口中的位置和大小。布局管理器使得开发者无需精确计算每个组件的位置,而是通过预定义的规则自动进行布局。 Java提供了...
### SWT布局管理器在Java中的应用详解 在Java的图形用户界面(GUI)开发领域,Swing和SWT是两个广泛使用的框架。Swing是Java的一部分,而SWT(Standard Widget Toolkit)则是Eclipse项目的一部分,专门针对原生操作...
本实例将深入探讨Java Swing的布局管理器及其应用。 首先,Java Swing 提供了几种内置的布局管理器,包括 FlowLayout、BorderLayout、GridLayout、CardLayout 和 GroupLayout。每种布局管理器都有其特定的用途和...
Java Swing 组件布局管理器之 FlowLayout(流式布局)入门教程 Java Swing 组件布局管理器中有多种布局管理器,今天我们主要介绍 FlowLayout(流式布局),它是最简单、最基础的一个布局管理器。 FlowLayout 也称为...
Java中的布局管理器可以分为七种:流布局管理器(FlowLayout)、边界布局管理器(BorderLayout)、网格布局管理器(GridLayout)、卡片布局管理器(CardLayout)、盒式布局管理器(BoxLayout)、网格袋布局管理器...
1. **Java布局管理器**: Java提供了多种布局管理器,如FlowLayout、BorderLayout、GridLayout、CardLayout和GridBagLayout。FlowLayout是最简单的布局,按照从左到右、从上到下的顺序排列组件。BorderLayout将界面...
java布局管理,关于一些基础和高级的应用
Java中的GridBagLayout布局管理器是Java Swing中用于组织组件的一种高级布局策略,它提供了最大的灵活性,能够处理不同大小的组件并允许它们跨多个网格单元,甚至部分重叠。GridBagLayout通过GridBagConstraints对象...