JavaFX2.0网格布局窗格GridPane

JavaFX2.0网格布局窗格GridPane
JavaFX2.0网格布局窗格GridPane

JavaFX2.0网格布局窗格GridPane

public class GridPane extends Pane

GridPane将其孩子结点灵活地放置在行列网格中。若设置了边框和边缘(border and/or padding),它的内容只能在这些间隙内部。

孩子结点可以放置在任意位置并且可以跨行列。结点也可以在行列内随便覆盖,网格窗格孩子结点列表中的顺序决定了这些结点的堆栈顺序:第一个在最下,最后一个在上面。

GridPane也可以使用CSS来装饰。

网格约束

孩子结点的位置由其布局约束来定义:

若孩子结点的位置没被指定,则将其放入第一行列中。若跨行列数没有指定,默认为1。孩子结点的位置约束可以动态修改,网格窗格会随着更新。

总的行列数无需指定,窗格会根据内容自动扩展和收缩。

使用GridPane时,程序需要为孩子结点指定布局约束并将它们加入窗格中。约束使用的是该类的静态setter方法:

1.GridPane gridpane = new GridPane();

2.

3.// Set one constraint at a time...

4.Button button = new Button();

5.GridPane.setRowIndex(button, 1);

6.GridPane.setColumnIndex(button, 2);

7.

8.// or convenience methods set more than one constraint at once...

https://www.360docs.net/doc/9114601639.html,bel label = new Label();

10.GridPane.setConstraints(label, 3, 1);

11.

12.// column=3 row=1

13.

14.// don't forget to add children to gridpane

15.gridpane.getChildren().addAll(button, label);

更可以使用整合了以上步骤的方法来设置约束:

1.GridPane gridpane = new GridPane();

2.gridpane.add(new Button(), 2, 1);

3.

4.// column=2 row=1

5.gridpane.add(new Label(), 3, 1);

6.

7.// column=3 row=1

行列大小

行列尺寸默认是匹配内容的,列宽适应的是最宽的元素,行高适应的是最高的元素。然而,如果程序需要指定行列尺寸,可以通过RowConstraints 和ColumnConstraints对象指定。比如,

1.GridPane gridpane = new GridPane();

2.gridpane.getColumnConstraints().add(new ColumnConstraints(100));

3.// column 1 is 100 wide

4.gridpane.getColumnConstraints().add(new ColumnConstraints(200));

5.// column 2 is 200 wide

行列默认会动态修改大小。若程序需要特定的行列来适应额外的空间,可以设置RowConstraints或 ColumnConstraints 对象的优先级。比如

1.GridPane gridpane = new GridPane();

2.ColumnConstraints column1 = new ColumnConstraints(100,100,Double.MAX_VAL

UE);

3.column1.setHgrow(Priority.ALWAYS);

4.

5.ColumnConstraints column2 = new ColumnConstraints(100);

6.gridpane.getColumnConstraints().addAll(column1, column2);

7.// first column gets any extra width

百分百大小

或者,RowConstraints 和ColumnConstraints可以通过指定百分百来实现。

1.GridPane gridpane = new GridPane();

2.ColumnConstraints column1 = new ColumnConstraints();

3.column1.setWidthPercent(50);

4.

5.ColumnConstraints column2 = new ColumnConstraints();

6.column2.setWidthPercent(50);

7.

8.gridpane.getColumnConstraints().addAll(column1, column2); // each get 50

% of width

指定百分百后,行列的三个最值都会被忽略。

如果百分百总值超过了100,它们的值会被当成权重。

可选布局约束

原文链接:中软卓越https://www.360docs.net/doc/9114601639.html, https://www.360docs.net/doc/9114601639.html,

布局管理器主要包括

布局管理器主要包括:FlowLayout,BorderLayout,GridLayout,CardLayout,GridBagLayout 例3 import java.awt.*; public class ExGui{ private Frame f; private Button b1; private Button b2; public static void main(String args[]){ ExGui that = new ExGui(); that.go(); } public void go(){ f = new Frame("GUI example"); f.setLayout(new FlowLayout()); //设置布局管理器为FlowLayout b1 = new Button("Press Me"); //按钮上显示字符"Press Me" b2 = new Button("Don't Press Me"); f.add(b1); f.add(b2); f.pack(); //紧凑排列,其作用相当于setSize(),即让窗口 尽量小,小到刚刚能够包容住b1、b2两个按钮 f.setVisible(true); } } 查看运行结果 1. FlowLayout FlowLayout 是Panel,Applet的缺省布局管理器。其组件的放置规律是从上到下、从左到右进行放置,如果容器足够宽,第一个组件先添加到容器中第一行的最左边,后续的组件依次添加到上一个组件的右边,如果当前行已放置不下该组件,则放置到下一行的最左边。 构造方法主要下面几种: FlowLayout(FlowLayout.RIGHT,20,40); /*第一个参数表示组件的对齐方式,指组件在这一行中的位置是居中对齐、居右对齐还是居左对齐,第二个参数是组件之间的横向间隔,第三个参数是组件之间的纵向间隔,单位是象素。*/ FlowLayout(FlowLayout.LEFT);

java网格包GridBagLayout布局管理器专题

GridBagLayout网格包布局管理器 网格包布局管理是最复杂和灵活的布局管理,在下面偶会作详细的介绍。 与网格布局管理器不同的是,网格包布局管理器允许容器中各个组件的大小各不相同,还允许组件跨越多个网格,也允许组件之间相互部分重叠。 网格包布局理解为网格单元布局更合理,因为一个容器被划分为若干个网格单元,而每个组件放置在一个或多个网格单元中。 要注意的是,网格包布局不能指定一个容器的网格单元的大小其网格单元的划分是通过weightx和weighty参数来设置的,但也不是直接指定其网格单元的大小。当把一个组件放置在网格单元中时,组件所占据的位置和大小是由一组与他们相关联的约束来决定的。这些约束是由GridBagConstraints类型的对象来设置的,关于GridBagConstraints类型,后面会做专门的介绍。 由上所述使用网格包布局的一般步骤为: 1、创建一个GridBagLayout网格包布局对象,并使其成为当前容器的布局管理器。 2、创建一个GridBagConstraints类型的约束对象,然后使用该对象设置各种约束条件,注意这里设置的约束条件 并没有针对某一组件,要使某一组件具有设置的约束,需要使用第3步骤的方法。 3、然后使用GridBagLayout网格包布局中的setConstraints(Component com, GridBagConstraints cons)方法将 GridBagConstraints类型对象设置的约束添加到被设置的组件中,这样该组件就具有了GridBagConstraints设置的约束。其中setConstraints()的第一个参数是将要添加的组件,第二个参数是GridBagConstraints类型的约束对象。 4、最后将设置了约束的组件添加到容器中。 使用网格包布局的第二种方法为: 1、使GridBagLayout布局成为当前容器的布局管理器,这里也可以不用创建GridBagLayout对象。 2、创建一个GridBagConstraints类型的约束对象,然后使用该对象设置约束条件。注意这里设置的约束条件并没 有针对某一组件,要使某一组件具有设置的约束,需要使用第3步骤的方法。 3、然后使用add(Component com, Object cons)方法将组件和约束同时添加进容器中,这样添加进容器的组件就具有 了第2步的约束。注意其中的add(Component com, Object cons);第一个参数是将要添加的组件,第二个参数是要添加的GridBagConstraints类型的约束对象。 GridBagConstraints类型的约束参数: double weightx和double weighty参数(默认值为0) 这是两个非常重要的参数,该参数直接影响到怎样设置网格单元的大小,因此常握好该参数就可以对网格包布局应用自如。 该参数对x方向和y方向指定一个加权值。这个加权值直接影响到网格单元的大小,比如weightx的值分别为10,20,30,则在容器的x方向也就是列的方向,按一定的比例(比如1:2:3其具体算法请参看java文件)分配三个网格单元,其中加权值越大网格单元就越大,可以看出值的大小是没有关系的,加权值的作用是让容器以设定的值的比例在横向和纵向分配网格,且在容器的大小改变时这个比例不改变。 如果weightx只设置了一个值,而组件却不只一个以上,则被设置了的这个组件的网格单元的大小为容器在x方向的大小减去那两个组件的最小尺寸就是该组件的网格单元大小。默认情况下组件的最小尺寸是比较小的。 如果两个参数都为0(默认值),则组件会被显示在容器的中央,不管容器是放大还是缩小组件都只会显示在容器的中央。由上所述,在使用网格包布局时首先应先使用weightx和weighty来划分网格单元(不是直接划分,而是按一定比例来划分),网格单元划分出来后,组件放置在网格单元中的位置和大小就由后面介绍的约束来决定。 一定要注意的是设置权值后要使当前的设置生效应使用setConstraints()函数一次,如果连续设置多个同一方向的权值,则只有最后一次设置的权值有效,比如出现同时两行都设置了x方向的权值,则以最后一行设置的x方向的权值为标准来划分网格单元。 因此在使用GridBagLayout网格包布局管理器之前应先设置好网格单元,即要把容器划分为几行几列的网格单元,每行每列在容器中的宽度和高度比例,每个组件应在哪个网格单元。 int fill参数(默认值为GridBagConstraints.NONE) fill参数指定组件填充网格的方式,当某组件的网格单元大于组件的大小时被使用,一般情况下组件是以最小的方式被显示的,如果不使用fill参数,则有可能组件占不完整个网格单元,也就是说组件占据的空间比划分的网格单元小,这时组件将显示在网格单元中的某个位置(具体在什么位置由网格包中的参数来设置)。其可取的值如下:GridBagConstraints.NONE默认值,不改变组件的大小。 GridBagConstraints.HORIZONTAL使组件足够大,以填充其网格单元的水平方向,但不改变高度,其值等于整数2。 GridBagConstraints.VERTICAL使组件足够大,以填充其网格单元的垂直方向,但不改变宽度,其值等于整数3。 GridBagConstraints.BOTH使组件足够大,以填充其整个网格单元,其值等于整数1。 int gridwidth和int gridheight参数(默认值为1) 该参数指定组件占据多少个网格单元,gridwidth指定组件占据多少个网格单元的宽度,gridheight指定组件占据多

GridBagLayout(网格布局管理器)结构分析与功能使用详解

java.awt 类 GridBagLayout https://www.360docs.net/doc/9114601639.html,ng.Object java.awt.GridBagLayout 所有已实现的接口: LayoutManager, LayoutManager2, Serializable public class GridBagLayout extends Object implements LayoutManager2, Serializable GridBagLayout类是一个灵活的布局管理器,它不要求组件的大小相同便可以将组件垂直、水平或沿它们的基线对齐。每个GridBagLayout对象维持一个动态的矩形单元网格,每个组件占用一个或多个这样的单元,该单元被称为显示区域。 每个由GridBagLayout管理的组件都与GridBagConstraints的实例相关联。Constraints 对象指定组件的显示区域在网格中的具体放置位置,以及组件在其显示区域中的放置方式。除了 Constraints 对象之 外,GridBagLayout还考虑每个组件的最小大小和首选大小,以确定组件的大小。 网格的总体方向取决于容器的ComponentOrientation属性。对于水平的从左到右的方向,网格坐标 (0,0) 位于容器的左上角,其中 X 向右递增,Y 向下递增。对于水平的从右到左的方向,网格坐标 (0,0) 位于容器的右上角,其中 X 向左递增,Y 向下递增。 为了有效使用网格包布局,必须自定义与组件关联的一个或多个GridBagConstraints对象。可以通过设置一个或多个实例变量来自定义GridBagConstraints对象: GridBagConstraints.gridx、GridBagConstraints.gridy 指定包含组件显示区域的前导角的单元,在此显示区域中,位于 网格原点的单元地址是 gridx = 0, gridy = 0。对于水平的从左到右的布局,组件的前导角是其左上角。对于水平的从右到左的 布局,组件的前导角是其右上角。使用 GridBagConstraints.RELATIVE(默认值),指定会将组件直接放置在之前刚添加到容器中的组件的后面(沿 X 轴向为 gridx 或Y 轴向为 gridy)。 GridBagConstraints.gridwidth、GridBagConstraints.gridheight

浅析网格系统在网页设计中的重要性

浅析网格系统在网页设计中的重要性 发表时间:2010-06-18T08:52:40.217Z 来源:《计算机光盘软件与应用》2010年第5期供稿作者:吴智君1,丘昊2 [导读] 在网页设计中合理利用网格系统来组织页面上的内容能大大改善页面的精确性和美观性。 吴智君1,丘昊2 (1.柳州市气象局,广西柳州 545001;2.广西区气象信息中心,南宁 530022) 摘要:在网页设计中合理利用网格系统来组织页面上的内容能大大改善页面的精确性和美观性。为更高层次的创作提供了一个框架, 网格系统在很大程度上使我们的排版工作压力得到了缓解。与传统印刷媒体有所不同,在网页中利用网格系统则要考虑到不同的浏览器、 操作系统、屏幕尺寸等不固定因素,网格系统必须能适应这些变化。如果加以合理利用,网格系统可以使整个网站的视觉效果得到提升。 关键词:网格系统;网页设计;美观;视觉效果 中图分类号:TP311.56 文献标识码:A 文章编号:1007-9599 (2010) 05-0000-01 The Importance of Grid System in Webpage Design Wu Zhijun1,Qiu Hao2 (1.Liuzhou meteorology Bureau,Liuzhou 545001,China;2. Guangxi Meteorological Information Center,Nanning 530022,China) Abstract:In the web design of rational use of grid system to organize content on the page the page can greatly im Keywords:Grid;Web design;Beautiful;Visual effects 当今一些大型的网站都有着非常美观的视觉效果,因为它们很可能都在网页设计过程中合理利用了网格系统。网格系统可以使页面布 局显得更加规律和稳定,给网页制作者在设计时提供了一个标准的模板。但使用网格系统并不意味着枯燥的、墨守成规的设计,一个优秀 的网页制作者不仅能够巧妙的应用网格系统的布局规则,而且还能适时地突破这些规则的瓶颈,为网络用户提供更具观赏性的网页。 一、网页网格系统的 (一)网页网格系统的定义 网页网格系统的作用就是:将网页中的信息分布以及版面布局用划分规则的网格阵列来进一步归范。网页网格系统产生和发展于从平 面网格系统中。对于网页设计者来说,合理的使用网格系统,不仅可以让网页呈现的信息更加美观易读,使之更具可用性。而且,在前端 开发的角度看,网页将会更加的灵活、规范。 (二)网格的基本作用 在网页设计流程中,网格系统占据着极其重要的地位,其作用十分明显。它和“排版”决定着信息的视觉组织形式,也就是我们看到 的网页样式。把页面中的信息组织到一起是网格的基本功能。合理利用网格系统来辅助网页设计,可以使我们更轻松地达到以下目的:让 网页界面上呈现的信息更易读,网页布局更加美观合理,让读者能在视觉方面感觉到舒适,同时还增加了网页的实用性。因为网格系统有 充分的美学依据以及科学理论依据做为辅助,可以让设计者避免以往仅凭感觉做设计的传统方法,效率较低,而且效果有时也不能令人满 意。在数码媒体中,合理的利用网格,可以让制作者设计出来的作品变得更加新颖,也增强了相互之间的关联性。 (三)网页网格系统的特殊性 经过印刷媒体多年的探索和改进,在不断的反复测试中发现了一些适合用来表现文本和图像信息的版式和规则。在经过几代人的改进 之后,这些版式和信息已经使读者形成了固定的阅读和浏览习惯。在传统印刷媒介中,设计者拥有一个固定大小的界面,比如一张纸或其 他材料,而它们的大小、尺寸都是固定的。但是在网络媒介就不同于传统印刷媒介,因为不同的浏览者使用的浏览器、系统操作平台以及 电脑屏幕大小和分辨率都是各不相同的;甚至通过手机、掌上电脑来浏览网页,它们的屏幕尺寸、屏幕分辨率等也是不尽相同的。优秀的 网页设计师会认识到,不同的用户对于相同网站的视觉效果需求是不一样的。与传统媒介相比,网页制作者在对版面视觉效果的控制方面 失去了很多主动权。我们需要做的只是:设计出可以适应这些变化的网格系统。 二、24x40,960网格系统 图 1 图 2 如图1所示,雅虎是一个以信息展示为主的门户型网站,该站使用的正是著名的960网格系统。对于信息的阅读来讲,960px的网页宽度 比较合适;因为比起自适应宽度布局,固定宽度的布局控制起来更容易,具有良好的可维护性和可扩展性。在Alexa全球网站的排行榜里, 雅虎位列第三。像这样一个大型的综合类网站,每天的浏览量、信息量都非常大,而且雅虎功能又多,又繁杂,会很容易使浏览者产生烦 躁情绪。比起纸质媒体的读者网络用户比较缺乏耐心,版式的不合理会更容易激起他们的烦躁心理。甚至,有的用户在数秒钟之内没有找 到自己所需要的信息,就毫不犹豫地退出网站,转而浏览其他网页。 以上这些因素不得不考虑,雅虎最终锁定了960固定宽度的网格布局。这是标准的24×40网格系统,它比12×80、16×60的网格系统相 比更加多样化,可以满足雅虎繁杂琐碎的信息组织需要,使各种信息的层级更加清晰,布局更加合理、美观。正确的选择了页面布局方 案,是雅虎能长期雄踞Alexa三甲的原因之一。 三、结语 在网页设计的过程中,网格系统是不可忽略的一个重要问题。如今愈来愈多的大型网站开始利用网格系统来打造和美化自己的网页, 这是一种趋势。为网络用户创造一个更舒适、更美观、更人性化的网页视觉环境是每个网页制作者的责任。只有在符合视觉科学规律的前 提下进行再创新,网页制作者才有可能更大程度的发挥自己的创造力,设计出更加独特,更加美观的网页作品。 参考文献: [1]中国站长站———站长之家 网页栅格系统研究(1),(2),http:/ /https://www.360docs.net/doc/9114601639.html,/Design/ Pages/ 052MJ262009.html. [2](美)埃伦·鲁普顿.王毅译.字体设计指南[J]上海:上海人民美术 出版社,2006

网页页面布局带来稳定性和结构性网格布局

来源:网页教学网 网格可以给网页布局具备稳定的结构,给设计师提供一个建站用的合理模板。 纵观当下一些采用了顶尖设计的大网站,我们会发现他们很有可能运用了一些网格布局。网格可以给网页页面布局带来稳定性和结构性,给设计师提供了一个可在此基础上搭建网站的便利模板。 网格个不意味着你就必须把作品设计的很无趣。一位好的设计师会应用网格布局的基本规则,并知道如何恰当的打破这些规则。 “网格系统是起辅助作用,不是起担保作用。它有许多用途,每个设计师都可以找到一个适合个人风格的运用方式。不过我们先需要学会如何使用网格;网格设计是一门需要大量练习的艺术。”、 ——约瑟夫·米勒-布鲁克曼网格基础知识 先让我们了解一些网格的术语。网格是一种布局划分,它使用横向和纵向引导线将边白(margin),空格和纵列包含进来,从而提供一个内容布局的框架。 网格一般是在出版行业才能看到,不过它也非常适用于网页设计。网格也不是一定是要你把网站搞的像个报纸的布局,但是它确实可以帮你制作出一个可以在此基础上做设计的统一结构。 网格只是一个辅助设计的的工具,而绝不应该成为限制你设计创造性的障碍。 理解并遵循规则 当你开始学习任何特定新技能时,你都应该遵循对应的准则。刚开始学习基础可以确保你能有效的运用这些基本原理。

刚开始网格间的区别不大,你应该按照网格,让所有的设计元素对齐,并放置到位。在你的设计中使用网格可以给你的内容带来结构性。也给你提供了一个起步的地方,但是它绝不应该扼杀你的创造性。 当下有两种创建网格模板的办法。 自己制作一个网格模板 目前有许多不同的理论可以可以帮你设置好你自己的网格,你的选择权无穷无尽,但是最终,你应该改选择一个最适合你手头项目的网格模板来。 你可以将一个空白文档进行分割,创建出偶数或奇数栏来。通常把中缝(栏与栏之间的空白)考虑进你的网格系统会很有帮助的。 你的网格可以很复杂,可以很简单,随你喜欢。你的网格布局越复杂越精巧,网格系统的自由度就越大。而它越简单的话,理解起来就越方便。选择权在你。 下面是几个用PhotoShop参考线(视图>新参考线)创建的网格范例。

网格包布局管理器.

GridBagConstraints类型的约束参数: double weightx和double weighty参数(默认值为0) 这是两个非常重要的参数,该参数直接影响到怎样设置网格单元的大小,因此常握好该参数就可以对网格包布局应用自如。 该参数对x方向和y方向指定一个加权值。这个加权值直接影响到网格单元的大小,比如weightx的值分别为10,20,30,则在容器的x方向也就是列的方向,按一定的比例(比如1:2:3其具体算法请参看java文件)分配三个网格单元,其中加权值越大网格单元就越大,可以看出值的大小是没有关系的,加权值的作用是让容器以设定的值的比例在横向和纵向分配网格,且在容器的大小改变时这个比例不改变。 如果weightx只设置了一个值,而组件却不只一个以上,则被设置了的这个组件的网格单元的大小为容器在x方向的大小减去那两个组件的最小尺寸就是该组件的网格单元大小。默认情况下组件的最小尺寸是比较小的。 如果两个参数都为0(默认值),则组件会被显示在容器的中央,不管容器是放大还是缩小组件都只会显示在容器的中央。 由上所述,在使用网格包布局时首先应先使用weightx和weighty来划分网格单元(不是直接划分,而是按一定比例来划分),网格单元划分出来后,组件放置在网格单元中的位置和大小就由后面介绍的约束来决定。 一定要注意的是设置权值后要使当前的设置生效应使用setConstraints()函数一次,如果连续设置多个同一方向的权值,则只有最后一次设置的权值有效,比如出现同时两行都设置了x方向的权值,则以最后一行设置的x方向的权值为标准来划分网格单元。 因此在使用GridBagLayout网格包布局管理器之前应先设置好网格单元,即要把容器划分为几行几列的网格单元,每行每列在容器中的宽度和高度比例,每个组件应在哪个网格单元。 int fill参数(默认值为GridBagConstraints.NONE) fill参数指定组件填充网格的方式,当某组件的网格单元大于组件的大小时被使用,一般情况下组件是以最小的方式被显示的,如果不使用fill 参数,则有可能组件占不完整个网格单元,也就是说组件占据的空间比划分的网格单元小,这时组件将显示在网格单元中的某个位置(具体在什么位置由网格包中的参数来设置)。其可取的值如下: GridBagConstraints.NONE默认值,不改变组件的大小。 GridBagConstraints.HORIZONTAL使组件足够大,以填充其网格单元的水平方向,但不改变高度,其值等于整数2。 GridBagConstraints.VERTICAL使组件足够大,以填充其网格单元的垂直方向,但不改变宽度,其值等于整数3。

JavaFX2.0网格布局窗格GridPane

JavaFX2.0网格布局窗格GridPane public class GridPane extends Pane GridPane将其孩子结点灵活地放置在行列网格中。若设置了边框和边缘(border and/or padding),它的内容只能在这些间隙内部。 孩子结点可以放置在任意位置并且可以跨行列。结点也可以在行列内随便覆盖,网格窗格孩子结点列表中的顺序决定了这些结点的堆栈顺序:第一个在最下,最后一个在上面。 GridPane也可以使用CSS来装饰。 网格约束 孩子结点的位置由其布局约束来定义: 若孩子结点的位置没被指定,则将其放入第一行列中。若跨行列数没有指定,默认为1。孩子结点的位置约束可以动态修改,网格窗格会随着更新。 总的行列数无需指定,窗格会根据内容自动扩展和收缩。 使用GridPane时,程序需要为孩子结点指定布局约束并将它们加入窗格中。约束使用的是该类的静态setter方法: 1.GridPane gridpane = new GridPane(); 2. 3.// Set one constraint at a time... 4.Button button = new Button(); 5.GridPane.setRowIndex(button, 1); 6.GridPane.setColumnIndex(button, 2); 7. 8.// or convenience methods set more than one constraint at once... https://www.360docs.net/doc/9114601639.html,bel label = new Label(); 10.GridPane.setConstraints(label, 3, 1); 11. 12.// column=3 row=1 13.

CSS3 网格布局(grid-layout)基础知识

CSS3引入了新的网格布局(grid layout),以适应显示和设计技术的发展(尤其是移动设备优先的响应式设计)。 主要目标是建立一个稳定可预料且语义正确的网页布局模式,用来替代过往表现不稳定且繁琐的table、flow以及JS脚本混合技术来实现的网页动态布局。 1. 概述 网格模板区域(grid-template-areas)、网格模板行(grid-template-rows)和网格模板列(grid-template-columns),这3个属性共同显式定义了一个网格容器。 而网格模板(grid-template)属性是一个用来同时设置这3个属性的速写(shorthand)。 grid items内容可能会超出显式网格,这时网格容器会自动 生成隐式轨道(implicit track),这些隐式轨道的尺寸由 grid-auto-rows 和grid-auto-columns 属性所确定。 显式网格的大小是由网格模板区域定义的行/列数以及在网格模板行/网格模板 列属性定义了尺寸的行/列数中的较大者决定的。 任何由网格模板区域定义的行或列但没有在网格模板行/网格模板列中定义尺寸,则由grid-auto-rows或grid-auto-columns属性来确定大小。 如果没有定义显式轨道,显式网格依然在每根轴线上包含一个网格线。 网格定位(grid-placement)属性中的数字索引从显式网格的边缘开始计算。如果从起始侧开始,索引为以1开始的正数。反之从结束侧开始,则为以-1开始 的负数。 2. 轨道尺寸:grid-template-rows 和grid-template-columns

二十九、Java图形化界面设计——布局管理器之FlowLayout(流式布局)

二十九、Java图形化界面设计——布局管理器之FlowLayout (流式布局) 前文讲解了JFrame、JPanel,其中已经涉及到了空布局的使用。Java虽然可以以像素为单位对组件进行精确的定位,但是其在不同的系统中将会有一定的显示差异,使得显示效果不尽相同,为此java提供了布局管理器,以使编写的图形界面具有良好的平台无关性。 注意:所有的布局管理器均是针对容器来使用的,包括顶层容器和中间容器。 一、布局管理器所属类包

二、容器的默认布局管理器 各容器都有默认的布局管理,见下表: 三、FlowLayout(流式布局)

使用FlowLayout布局方式的容器中组件按照加入的先后顺序按照设置的对齐方式(居中、左对齐、右对齐)从左向右排列,一行排满(即组件超过容器宽度后)到下一行开始继续排列。 1、流式布局特征如下: l 组件按照设置的对齐方式进行排列 l 不管对齐方式如何,组件均按照从左到右的方式进行排列,一行排满,转到下一行。(比如按照右对齐排列,第一个组件在第一行最右边,添加第二个组件时,第一个组件向左平移,第二个组件变成该行最右边的组件,这就是从左向右方式进行排列) 2、流式布局FlowLayout类的常用构造函数和方法

3、FlowLayout 布局应用代码段举例 1) 设置FlowLayout 布局 JFrame fr=new JFrame( ); FlowLayout flow=new FlowLayout( ); fr.setLayout(flow); 上面的语句可以简化成: fr.setLayout(new FlowLayout()); 2) 设置框架fr为组件左对齐的FlowLayout布局 fr.setLayout(newFlowLayout(FlowLayout.LEFT)); 3) 设置框架fr为组件左对齐的FlowLayout布局,并且组件的水平间距为20像素,垂直间距为40像素。 fr.setLayout(new FlowLayout(FlowLayout.LEFT,20,40)); 实例:对齐方式 // FlowLayoutDemo.java importjavax.swing.*;

网格包布局管理体系器

网格包布局管理体系器

————————————————————————————————作者:————————————————————————————————日期:

GridBagConstraints类型的约束参数: double weightx和double weighty参数(默认值为0) 这是两个非常重要的参数,该参数直接影响到怎样设置网格单元的大小,因此常握好该参数就可以对网格包布局应用自如。 该参数对x方向和y方向指定一个加权值。这个加权值直接影响到网格单元的大小,比如weightx的值分别为10,20,30,则在容器的x方向也就是列的方向,按一定的比例(比如1:2:3其具体算法请参看java文件)分配三个网格单元,其中加权值越大网格单元就越大,可以看出值的大小是没有关系的,加权值的作用是让容器以设定的值的比例在横向和纵向分配网格,且在容器的大小改变时这个比例不改变。 如果weightx只设置了一个值,而组件却不只一个以上,则被设置了的这个组件的网格单元的大小为容器在x方向的大小减去那两个组件的最小尺寸就是该组件的网格单元大小。默认情况下组件的最小尺寸是比较小的。 如果两个参数都为0(默认值),则组件会被显示在容器的中央,不管容器是放大还是缩小组件都只会显示在容器的中央。 由上所述,在使用网格包布局时首先应先使用weightx和weighty来划分网格单元(不是直接划分,而是按一定比例来划分),网格单元划分出来后,组件放置在网格单元中的位置和大小就由后面介绍的约束来决定。 一定要注意的是设置权值后要使当前的设置生效应使用setConstraints()函数一次,如果连续设置多个同一方向的权值,则只有最后一次设置的权值有效,比如出现同时两行都设置了x方向的权值,则以最后一行设置的x方向的权值为标准来划分网格单元。 因此在使用GridBagLayout网格包布局管理器之前应先设置好网格单元,即要把容器划分为几行几列的网格单元,每行每列在容器中的宽度和高度比例,每个组件应在哪个网格单元。 int fill参数(默认值为GridBagConstraints.NONE) fill参数指定组件填充网格的方式,当某组件的网格单元大于组件的大小时被使用,一般情况下组件是以最小的方式被显示的,如果不使用fill 参数,则有可能组件占不完整个网格单元,也就是说组件占据的空间比划分的网格单元小,这时组件将显示在网格单元中的某个位置(具体在什么位置由网格包中的参数来设置)。其可取的值如下: GridBagConstraints.NONE默认值,不改变组件的大小。 GridBagConstraints.HORIZONTAL使组件足够大,以填充其网格单元的水平方向,但不改变高度,其值等于整数2。 GridBagConstraints.VERTICAL使组件足够大,以填充其网格单元的垂直方向,但不改变宽度,其值等于整数3。

网袋布局管理器--GridBagLayout使用介绍

网袋布局管理器--GridBagLayout使用介绍 GridBagLayout 【常用构造函数】 public GridBagLayout() 【特点】: GridBagLayout是所有AWT布局管理器当中最复杂的,同时他的功能也是最强大的.这种现象源于它所提供的众多的可配置选项,你几乎可以完全地控制容器的布局方式.尽管复杂性很明显,只要理解了基本思想,就很容易使用GridBagLayout了. GridBagLayout从它的名字中你也可以猜到,它同GridLayout一样,在容器中以网格形式来管理组件.但GridBagLayout功能要来得强大得多. 1、GridBagLayout管理的所有行和列都可以是大小不同的. 2、GridLayout把每个组件限制到一个单元格,而GridLayout并不这样:组件在容器中可以占据任意大小的矩形区域, GridBagLayout通常由一个专用类来对他布局行为进行约束,该类叫GridBagConstraints.其中的所有成员都是public的,因此要学好如何使用GridBagLayout首先要了解有那些约束变量,以及如何设置这些约束变量. 以下是GridBagConstraints的公有成员变量 public int anchor public int fill public gridheight Public gridweight public girdx public gridy public Insets insets public int ipadx public int ipady public double weightx public double weighty 看起来有很多约束需要进行设置,但事实上许多约束只需设置一次,并对多个组件重用,每次添加组件时只有少数的项需要修改. 下面是一个具有简单约束的GridBagLayout示例 public class GridBagLayoutExample2 extends JPanel { public GridBagLayoutExample2() { this.setLayout(new GridBagLayout()); this.setOpaque(true); GridBagConstraints c = new GridBagConstraints(); JButton b = new JButton ("One"); c.gridx = 0 ;

网格布局

级联样式表级别3 (CSS3) 网格布局(“网格”)是Internet Explorer 10 和使用JavaScript 的Windows 应用商店应用中新增的功能。与Flexbox 相似,通过“网格”所获得的布局流畅性大于使用浮动或脚本进行定位所获得的布局流畅性。CSS3 网格对齐使你可以为网页或Web 应用的主要区域划分空间,并在尺寸、位置和层范畴内定义各个HTML 控件部件之间的关系。从而无需创建固定布局,固定布局无法利用浏览器窗口中的可用空间。 截止到编写本文档时,CSS3 网格布局仍处于开发阶段。当前的预发行版中实现的CSS3 网格布局基于CSS 网格布局模块(当前处于万维网联合会(W3C) 工作草案阶段)。 由于网格功能使你能够将元素对齐到列和行中但它没有内容结构,因此通过它还可以实现无法由HTML 表格实现的方案。通过将网格功能与媒体查询结合使用,可以使布局无缝地适应设备、方向、可用空间等因素的变化。 本主题包含下列部分: ?网格元素 轨道(列和行) o重复网格轨道 网格项 o对齐网格项 o堆叠网格项 o跨越网格项 ?相关主题 有关网格布局的实例演示,请参阅IE Test Drive上的实例演示:CSS3 网格布局和网格系统。另请参阅如何使用CSS 网格创建自适应布局。 网格元素 网格布局的基本构建块就是网格元素,该元素是通过将元素的display属性设置为-ms-grid(对于块级的网格元素)或-ms-inline-grid(对于内联级的网格元素)。(由于“网格布局”草案尚处于准备阶段,所以这一节中的属性必须在使用时带有特定于Microsoft 供应商前缀“-ms-”,才能与Internet Explorer 10 和适用于Windows 8 的使用JavaScript 的Windows 应用商店应用配合使用。)例如,下面的代码示例在具有"myGrid" ID 的元素内创建网格: CSS 轨道(列和行) 在创建网格元素之后,使用以下属性对列和行应用大小: 属性描述

“网格化”配网规划

基于空间布局的“网格化”配网规划 2013年03月

目录 一、项目概况 (1) 二、基于空间布局的负荷预测 (1) 2.1负荷预测方法 (1) 2.2负荷预测结果 (2) 2.3小区负荷预测汇总 (3) 三、基于空间布局的配网规划 (4) 四、附图 (5) 五、进度安排 (5) 附件一图例 (6) 附件二技术原则 (7) 附件三规划实例 (11)

一、项目概况 简述XX小区地理位置、区域定位、占地/建筑面积等。 二、基于空间布局的负荷预测 2.1负荷预测方法 根据各小区掌握控规或总规情况的不同,采取不同的负荷预测指标对小区进行负荷预测。具备控规的小区根据《战略规划部相关文件》并结合 北京地区实际情况,选取不同用地性质的建筑用电指标;具备总规的小区 根据《城市电力规划规范》并结合北京地区实际情况,选取不同用地性质的建设用地负荷密度指标。 1)基于控规的负荷预测 根据其控规中各地块的用地性质、占地面积、容积率、建筑面积等详细数据参数,对照表2-1中所对应的各类用地建筑用电指标进行负荷预测。 表2-1各类用地性质的用电指标情况表编号建筑性质用电指标同时率 1 普通住宅 60 W/建筑平米 或6 kW/户 0.2 2 高档住宅楼、高级公寓、住宅及办公为一体的SOHO、别墅 区等(不含分散式电采暖)10 kW/户 200及以下0.2 200户以上0.15 3 分散式电采暖(除采用集中式电锅炉以外的分散式电采 暖:如电热模、电暖气等) 6 kW/户0.6 4 计算采用集中式电锅炉(只作为采暖,不作制冷)采暖的 住宅,锅炉配电室与住宅配电室分开时 6 kW/户0.2 5 计算采用集中式电锅炉(只作为采暖,不作制冷)采暖的 住宅,锅炉配电室与住宅配电室不分开时 6 kW/户0.6

利用相对坐标轻松完成网格袋布局

电脑知识与技术网络通讯与安全 电脑知识与技术 凡是学习过JAVA的人都知道,JAVA中学习起来最困难、最容易引起混淆的就是JAVA的布局,尤其是网格袋布局,由于它使用了很多约束条件来控制界面,所以学习的人觉得它很复杂,也很灵活,本文将教你利用单元格相对坐标定位轻松搞定网格袋布局。 1网格袋布局 要创建网格袋布局,可以使用GridBagLayout类和助手类GridBagConstraints。GridBagLayout管理器是AWT提供的最灵活、最复杂的布局管理器,它用于定义要放置到单元格中的每个组件 的属性,包括布局、 大小、对齐方式等。助手类GridBagConstraints可以接受几个网格袋约束条件,网格袋约束条件和每个组件之间的关系决定了整个布局,约束条件决定了包含在对象以内的构件参数的定位。 2创建网格袋的一般步骤 2.1利用相对坐标设计网格 在进行创建布局之前,首先要做到心中有数,我们要绘制的用户界面要达到什么样的效果,即进行网格设计,最好将各个组件的位置以单元格的形式绘制在纸上,每个组件有自己的单元格,不能将多个组件放到同一个单元格中,对每个单元格标上坐标(y,x),它们是以单元格为单位,而非像素为单位,并且这个坐标是一个相对坐标,比如下面图1的坐标(0,0)表示是第一个单元格的坐标,那么横向的第二个单元格坐标为(1,0);如果将第一个单元格定义为(2,2),那么横向的第二个单元格坐标为(3,2),以次类推,因为只要你确定了第一个的位置,其他单元格就依次相对改变坐标,不影响整体布局效果,这就是相对坐标,这个坐标在布局中表现为约束中的gridy和gridx。 图1 2.2创建网格的步骤 第一步:创建一个GridBagLayout对象; 构造方法不需要任何参数。 GridBagLayoutgbl=newGridBagLayout() 原则上,这条代码的位置可以比较的随意,只要你在没有调用gbl之前创建都是可以的,一般情况下,我们在将pane添加到窗口之后写这条代码。 第二步:将panel的布局设置为网格袋; 只需要调用panel面板的setLayout方法。如panel.setLayout()第三步:创建一个GridBagConstraints对象,即约束对象; GridBagConstraints的构造是没有参数的,这就意味着在创建对象之后,我们通常要对对象的属性进行设置,这里的属性即是约束条件。 GridBagConstraintsgbc=newGridBagConstraints() 第四步:初始化约束设置; 在多个组件的情况下,每个组件有不同的约束,我们可以重用GridBagConstraints对象,能够给GridBagConstraints属性分配下列值:anchor,fill,gridwidth,gridheight,gridx,gridy,weightx,weighty, insets,ipadx,ipady。 Anchor该约束只适用于不充满整个单元格的组件,即构件比它的显示区域小的情况,它告诉JAVA,将组件放在单元格的什么地方,该约束的有效值包括CENTER(水平和垂直居中)、NORTH(放置构件在容器北部)、NORTHEAST(放置构件在容器东北部)、EAST(放置构件在容器东部)、SOUTHEAST(放置构件在容器东南部)、SOUTH(放置构件在容器南部)、SOUTHWEST(放置构件在容器西南部)、WEST(放置构件在容器西部)、NORTHWEST(放置构件在容器西北部),默认为CENTER。设置方法: gbc.anchor=GridBagConstraints.CENTER fill用于构件的显示区域比构件的要求区域大以决定是否(并且如何)调整构件的尺寸,它的可能取值有四个:BOTH(沿两个方向伸展,以添满单元格)、NONE(以最小尺寸显示组件)、HORIZONTAL(水平填补显示区域,不改变高度)、VERTICAL(垂直填补显示区域,不改变宽度)。默认为NONE。设置方法: gbc.fill=GridBagConstraints.BOTH gridwidth,gridheight它们规定构件在显示区域跨越的单元格列数(gridwidth)或行数(gridheight),缺省值是1。有效值可以是:REMAINDER(规定构件将是行gridwidth或列gridheight里的最后 收稿日期:2006-02-15 作者简介:杨怀义(1965-),男,四川通江人,讲师,主要研究方向:计算机图形处理、程序设计教学。 利用相对坐标轻松完成网格袋布局 杨怀义 (南充职业技术学院,四川南充637000) 摘要:网格袋布局管理器是java布局中最有用、最灵活、最复杂、最难掌握的一种布局管理器,实际上,如果我们明白了在布局时它利用了单元格相对坐标定位这一点,以及各个约束条件在布局中的作用,网格袋布局也会变得很轻松。 关键词:java;程序设计;布局管理;网格袋布局器中图分类号:TP312文献标识码:A文章编号:1009-3044(2006)14-0076-02 CompleteEasilyGridbaglayoutbyUsingRelativeCoordinate YANGHuai-yi (NanChongProfessionalTechnicCollege,Nanchong637000,China) Abstracts:Gridbaglayoutadministeringmachineisonethatcisthemostuseful,complexanddifficulttomaster.Infact,ifweunderstandthatitlocatesbymeansofunitblankrelativecoodinateinlayoutingandthefunctionofeachlimitedconditioninlayouting,wecaneasilylayoutthegridbag. Keywords:java;programming;layoutmanagement;gridbaglayoutadministering machine 76

GridBagLayout网格组布局实例

package com.lw; import java.awt.EventQueue; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax.swing.UIManager; public class GridBagLayoutDemo extends JFrame { /** * */ private static final long serialVersionUID= -4481121176026056530L; private JPanel contentPane; /** * Launch the application. */ public static void main(String[] args) { try { UIManager .setLookAndFeel("com.sun.java.swing.p laf.nimbus.NimbusLookAndFeel"); } catch (Throwable e) { e.printStackTrace(); } EventQueue.invokeLater(new Runnable() { public void run() { try { GridBagLayoutDemo frame = new GridBagLayoutDemo(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } });

相关文档
最新文档