文档章节

JGoodies Form参数详解

ruyees
 ruyees
发布于 2014/10/05 11:47
字数 1108
阅读 14
收藏 0
点赞 0
评论 0

http://hi.baidu.com/whicss/blog/item/d1e7d819efbc1a76dbb4bd03.html

 

Alignments

JGoodies Forms 允許元件排列:水平 – left、center、right
                    垂直 –  top、center、bottom
並且可以填滿 (fill) 一個或多個cell之中有用的空間。
FormLayout layout = new FormLayout(
"left:pref, 15px, center:pref, 15px, right:pref, 15px, fill:pref,15px, pref",
"pref, 12px, pref, 4px, pref, 4px, pref, 4px, pref, 4px, pref");

上面的程式碼是告知元件在行與列中default的排列方式和大小。如果想改變元件的排列方式的話,可以利用CellConstraints的instance在元件加入時改變。


panel.add(new JLabel("Fill"),     cc.xy(7,  1, 
"center, center"
));  

panel.add(new JLabel("Default"), cc.xy(9, 1, "center, center" ));


Basic Sizes

Form提供了豐富的大小設定:75px 指的是固定75像素的大小,pref是元件最適當的大小。

 

private JComponent buildHorizontalSizesPanel() {
FormLayout layout = new FormLayout(
"pref, 12px, " + "75px, 25px, min, 25px, pref",
"pref, 12px, pref");

// Create a panel that uses the layout.
JPanel panel = new JPanel(layout);

// Set a default border.
panel.setBorder(Borders.DIALOG_BORDER);

// Create a reusable CellConstraints instance.
CellConstraints cc = new CellConstraints();

// Add components to the panel.
panel.add(new JLabel("75px"), cc.xy(3, 1));
panel.add(new JLabel("Min"), cc.xy(5, 1));
panel.add(new JLabel("Pref"), cc.xy(7, 1));

panel.add(new JLabel("new JTextField(15)"), cc.xy(1, 3));

panel.add(new JTextField(15), cc.xy(3, 3));
panel.add(new JTextField(15), cc.xy(5, 3));
panel.add(new JTextField(15), cc.xy(7, 3));

return panel;
}

上面利用"+"來區隔出不同的元件區塊,進而使程式碼不會太雜亂。

Growing

如果容器大於最適當的容器大小,會有額外的空間。這時就可以指明如何去分配這些額外的空間 ~ 讓單一的行或列擴張(growing),或是結合行列。

接著來看看這些程式碼片斷...

private JComponent buildHorizontalAllExtraSpacePanel() {
FormLayout layout = new FormLayout(
"pref, 6px, pref:grow",
"pref, 12px, pref");

JPanel panel = new JPanel(layout);
panel.setBorder(Borders.DIALOG_BORDER);
CellConstraints cc = new CellConstraints();

panel.add(new JLabel("Fixed"), cc.xy(1, 1));
panel.add(new JLabel("Gets all extra space"), cc.xy(3, 1));

panel.add(new JTextField(5), cc.xy(1, 3));
panel.add(new JTextField(5), cc.xy(3, 3));

return panel;
}

在formLayout的參數中可以看到pref:grow 。表示說,在這個位置的元件,大小為元件本身的大小 (最合適的大小...pref ) ,並會隨著面版的縮放,進而縮小或放大填滿剩下的有用空間 ( grow )。

private JComponent buildHorizontalHalfAndHalfPanel() {
FormLayout layout = new FormLayout(
"pref, 6px, 0:grow , 6px, 0:grow ",
"pref, 12px, pref");

JPanel panel = new JPanel(layout);
panel.setBorder(Borders.DIALOG_BORDER);
CellConstraints cc = new CellConstraints();

panel.add(new JLabel("Fixed"), cc.xy(1, 1));
panel.add(new JLabel("Gets half of extra space"), cc.xy(3, 1));
panel.add(new JLabel("gets half of extra space"), cc.xy(5, 1));

panel.add(new JTextField(5), cc.xy(1, 3));
panel.add(new JTextField(5), cc.xy(3, 3));
panel.add(new JTextField(5), cc.xy(5, 3));

return panel;
}

0:grow 表示在這個位置的元件,對齊方式是fill (default) ,元件大小為0,並且會擴張填滿目前剩下的有用空間。

下面二張圖可以看出pref:grow0:grow 的差別...



上面的圖是pref:grow ,下面的是0:grow 。可以發現到上面的圖第三個元件畫面被截掉了,這是因為第二個元件保有他自己本身的大小所致。

private JComponent buildHorizontalPercentMixedPanel() {
FormLayout layout = new FormLayout(
"pref, 6px, fill:0:grow(0.25) , 6px, fill:0:grow(0.75)",
"pref, 12px, pref");

JPanel panel = new JPanel(layout);
panel.setBorder(Borders.DIALOG_BORDER);
CellConstraints cc = new CellConstraints();

panel.add(new JLabel("Fixed"), cc.xy(1, 1));
panel.add(new JLabel("Gets 25% of extra space"), cc.xy(3, 1));
panel.add(new JLabel("Gets 75% of extra space"), cc.xy(5, 1));

panel.add(new JTextField(5), cc.xy(1, 3));
panel.add(new JTextField(5), cc.xy(3, 3));
panel.add(new JTextField(5), cc.xy(5, 3));

return panel;
}

fill:0:grow(0.25)表示說:在這個位置的元件對齊方式是fill,元件大小為0,可以擴張的比列是:全部空間中的25%。

private JComponent buildHorizontalPercentPanel() {
FormLayout layout = new FormLayout(
" pref:grow(0.33) , 6px, pref:grow(0.67)",
"pref, 12px, pref");

JPanel panel = new JPanel(layout);
panel.setBorder(Borders.DIALOG_BORDER);
CellConstraints cc = new CellConstraints();

panel.add(new JLabel("Gets 33% of the space"), cc.xy(1, 1));
panel.add(new JLabel("Gets 67% of the space"), cc.xy(3, 1));

panel.add(new JTextField(5), cc.xy(1, 3));
panel.add(new JTextField(5), cc.xy(3, 3));

return panel;
}

pref:grow(0.33)表示說:在這個位置的元件對齊方式是fill (default) ,元件大小為pref,可以縮放的比列是:剩下空間中的 33%。

 


 

fill:0:grow(x)pref:grow(x) 的不同處...






用相同的比例來看看,上面的圖使用的是fill:0:grow(0.25) ,下面的是pref:grow(0.25) 。上圖因為元件大小為0,所以直接取得整個空間中的25%(在先前元件之後的空間)。而下面的圖,因為保有基本的元件大小(pref),所以gorw只會取得...在所有 元件基本大小(pref)之後的額外空間(在這為25%)。也就是說,整個空間先減去所有 元件的基本大小,之後再從剩下空間中(若有的話)分配25%給此位置的元件,75%也是一樣。下面的圖說明一切...


本文转载自:http://zuoqiang.iteye.com/blog/1343178

共有 人打赏支持
ruyees
粉丝 3
博文 71
码字总数 0
作品 0
深圳
产品经理
JGoodies look&feels​ 软件首页地址不对

@红薯JGoodies look&feels 软件首页地址现在为:http://www.jgoodies.com/

yuzhouliu
2013/05/05
245
0
JFormDesigner 5.2 Beta 发布,Swing设计工具

JFormDesigner 5.2 Beta 引入了 JDeveloper 的插件,支持 Java 8 和 JGoodies Forms 1.6. JFormDesigner 是一种先进的图形用户界面Swing 的设计工具。完全支持JGoodies FormLayout , TableL...

oschina
2012/09/19
1K
11
JFormDesigner 5.0 正式版发布,表单设计器

新版本增加对 Beans 绑定(JSR 295) 和 BeanInfo 注解的支持;可单独对某个项目进行色设定;支持 JGoodies Forms 1.3 ;增强了很多属性等等。 JFormDesigner是一种先进的图形用户界面Swing 的...

红薯
2011/05/20
4.5K
6
launch4j 3.4 发布,Java 转可执行程序工具

launch4j 3.4 发布,此版本添加了一个新的 JREHOMEDIR 特定变量;修复了在 Eclipse Indigo 中遇到的 Ant 问题;更新了 JGoodies 库;添加了文件关联 launch 测试的,基于 Launch4j 环境变量的...

oschina
2014/04/23
1K
3
JFormDesigner 5.1 Beta 发布

JFormDesigner 5.1 Beta 发布。这个beta版本引入了NetBeans插件,支持JGoodies Forms 1.4,以及引入了结构紧凑,易于合并和快速负载的JFD表格文件的持久化格式JFDML。 JFormDesigner是一种先...

小卒过河
2011/08/01
502
1
JFormDesigner 5.0 Beta 发布

新版本增加对 Beans 绑定 (JSR 295) 的支持;另外可单独对项目进行设置;支持 JGoodies 表单 1.3;很多属性的正确等等。 JFormDesigner是一种先进的图形用户界面Swing 的设计工具。 具有一个...

红薯
2010/09/14
494
1
JFormDesigner 5.2 发布,Swing 设计工具

JFormDesigner 5.2 发布,此版本引入了 JDeveloper 插件;支持 Java 8 和 JGoodies Forms 1.8;改进了 GroupLayout 设计;提供 GroupLayout 差异可视化;改进了树文件选择器。 JFormDesigne...

oschina
2014/05/20
4.7K
4
JFormDesigner 5.1 发布,新增 NetBeans 插件

JFormDesigner 5.1 发布了,该版本增加了一个用于 NetBeans 的开发插件,支持 JGoodies Forms 1.4 和 1.5 版本,引入紧缩、易于合并和快速加载的持久化格式 JFDML (*.jfd) JFormDesigner是一...

oschina
2012/05/15
1K
2
Ubuntu下ICE-3.4.2的安装

本来要说安装应该是挺容易的,不过这次在Ubuntu下的安装确实费了些周折。因为ICE的官方系统支持中有windows、RHA、SUSE。没有ubunt的支持。不过ICE应该是可以支持的,需要从源码编译安装。 ...

唐玄奘
2017/12/14
0
0
Drupal中hook_form_alter()用法

格式:hookformalter(&$form, &$formstate, $formid) 参数详解: $form 组成表单的表单元素的嵌套数组 $form_state 一个带key,包含表单当前状态的数组 $form_id 代表表单名称的字符串. 即本...

菠萝皮
2012/03/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

vue基础知识练习

一、Hello World <div id="itany">{{msg}} <!-- 两对大括号{{}}称为模板,用来进行数据的绑定显示在页面中 --> </div><script src="js/vue.js"></script><script>var vm=new Vue({......

一个yuanbeth
6分钟前
0
0
spring @Transactional注解参数详解

原文:事物注解方式: @Transactional 当标于类前时, 标示类中所有方法都进行事物处理 , 例子: 1 @Transactional public class TestServiceBean implements TestService {} 当类中某些方法不需...

binhu
9分钟前
0
0
CORS 跨域实践

本文首发于个人微信公众号《andyqian》,期待你的关注~ 前言 系统通常都是由单体应用逐渐演化而来,演化成为前后端分离的分布式应用。在享受分布式系统带来的诸多好处之时,随之而来的也有不...

andyqian
16分钟前
7
0
开源 java CMS - FreeCMS2.8 会员管理

项目地址:http://www.freeteam.cn/ 会员组管理 会员管理 会员管理 从左侧管理菜单点击会员管理进入。 添加会员 在会员列表下方点击“添加”按钮。 填写相关属性后点击“保存”按钮即可。 编...

freeteam
18分钟前
0
0
bboss升级至 v5.0.6.8版本,改善对Elasticsearch SQL 的支持

v5.0.6.8功能改进如下: (1)持久层支持支持Elasticsearch SQL,使用参考文档:玩转Elasticsearch SQL功能 (2)解决持久层/elasticsearch模板变量解析多层级不起作用问题 (3)完善国际化功能 (4...

linux-tao
19分钟前
0
0
扫码二维码跳转到某个网站

添加maven依赖 <dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.0.0</version></dependency><dependency><groupId>com.goog......

gaomq
25分钟前
0
0
Windows平台下搭建Git服务器的图文教程

Git没有客户端服务器端的概念,但是要共享Git仓库,就需要用到SSH协议(FTP , HTTPS , SFTP等协议也能实现Git共享,此文档不讨论),但是SSH有客户端服务器端,所以在windows下的开发要把自己...

MKChan
31分钟前
0
0
告警系统主脚本&告警系统配置文件&告警系统监控项目

20.20 告警系统主脚本 准备工作 定义监控系统的各个目录,然后再去定义主脚本,因为是分布式的,所以需要每一台机器都需要定义,事先创建好各个脚本和各个目录,随后脚本直接拷贝过去即可,然...

影夜Linux
32分钟前
0
0
谈谈神秘的ES6——(一)初识ECMAScript

谈谈神秘的ES6——(一)初识ECMAScript 在《零基础入门JavaScript》我们就说过,ECMAScript是JavaScript的核心,是JavaScript语法和语义的解释器,同时也是一个标准。而ECMAScript标准其实也...

JandenMa
今天
1
0
第16章 Tomcat配置

16.1 Tomcat介绍 ####Tomcat介绍 LNMP架构针对的开发语言是PHP语言,php 是一门开发web程序非常流行的语言,早些年流行的是asp,在Windows平台上运行的一种编程语言,但安全性差,就网站开发...

Linux学习笔记
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部