文档章节

JGoodies Form参数详解

ruyees
 ruyees
发布于 2014/10/05 11:47
字数 1108
阅读 149
收藏 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%也是一樣。下面的圖說明一切...


ruyees
粉丝 3
博文 71
码字总数 0
作品 0
深圳
产品经理
私信 提问
加载中
请先登录后再评论。
beego API开发以及自动化文档

beego API开发以及自动化文档 beego1.3版本已经在上个星期发布了,但是还是有很多人不了解如何来进行开发,也是在一步一步的测试中开发,期间QQ群里面很多人都问我如何开发,我的业余时间实在...

astaxie
2014/06/25
2.7W
22
Base 参数解析库--bash argsparse

bash argsparse 是一个 Bash 的高级参数解析库。 Its purpose is to replace the option parsing and usage describing functions commonly rewritten in all scripts. Its features includ......

匿名
2013/03/27
374
0
LightWeb--LightWeb

使用较少的外部框架, 搭建轻型Web架构. 已经或将包含: 轻型依赖注入的实现 Front Controllerf模式实现Http Request的处理,完全摆脱Web Form和ASP.Net Repository实现持久层。 持续完善中, 希...

予沁安
2012/11/21
1.4K
0
web表单的构建和部署--Orbeon Forms

Orbeon Forms 提供了一套web表单的构建和部署方案, 实现了W3C XForms标准, 并提供一个免费的开源的社区版,以及商业版。 Orbeon Forms 已经在世界各地的多个行业中得到应用,包括政府,银行...

匿名
2012/12/06
4.1K
0
Janitor Monkey

保持你的云操作工具在最佳状态。Janitor Monkey (混乱的猴子)是一个弹性的工具,可以帮助应用程序容忍随机的实例故障 Tools for keeping your cloud operating in top form. Chaos Monkey is ...

匿名
2013/01/08
732
0

没有更多内容

加载失败,请刷新页面

加载更多

层次聚类与聚类树

聚类分析 在生态学研究当中,有些环境中的对象是连续(或者离散)的,而有些对象是不连续的,聚类的目的是识别在环境中不连续的对象子集,从而探索隐藏在数据背后的属性特征。聚类分析主要处...

SYSU星空
01/11
0
0
几个无聊但你可能忽略的C知识点

来源:公众号【编程珠玑】 作者:守望先生 ID:shouwangxiansheng C语言main函数的写法 标准中,只有下面两种写法: int main (void) { /**body**/ } 以及 int main (int argc, cha...

学以解忧
01/08
0
0
20个实战项目教你掌握OpenCV和图像处理,PDF开放下载

点击上方“小白学视觉”,选择加"星标"或“置顶” 重磅干货,第一时间送达 近期小白学视觉公众号推出了多篇OpenCV实战项目的文章,深受小伙伴们的喜爱。最近有小伙伴推荐,希望可以讲经典的项...

机器学习炼丹术
16分钟前
0
0
吃瓜!挂一个爬虫工作者

原本不打算撕逼的,可总感觉技术人员这么狗,不曝光他不合适。 此人微信号: YGMXMF 描述如下: 鉴于不可抗力因素,我删除了上篇文章! 此人想178买文章(早就关注了,当时没付费观看,现在要...

adminThorn
35分钟前
9
0
聊一聊一道关于线程池的面试题

网络上有这样一道关于线程池的面试题: 1. 高并发、任务执行时间短的业务怎样使用线程池? 2. 并发不高、任务执行时间长的业务怎样使用线程池? 3. 并发高、业务执行时间长的业务怎样使用线程...

黄小斜
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部