最近对swing又产生了兴趣,虽然以前也偶尔看过,但都停留在理论阶段,没实践过。
最近觉得重新再看看,试下能不能写个程序出来看看。首先找了一个开源的小程序看了下,因为基础的东西自己还记得些,看起来不是很困难。一直以来,自己对swing的layout都不满意,官方自带那几个,GridBagLayout控制粒度倒是还可以,但是用起来太复杂,其它的控制粒度都比较粗。最近在网上找了下,第三方的组件还是有些不错的,比如MigLayout与jgoodies FormLayout,这两个组件的思路是差不多的,个人感觉jgoodies实现稍微要好一点。下面就来讲讲关于jgoodies 的FormLayout。
jgoodies FormLayout的布局方式类似于html表格的table布局,如:
FormLayout layout = new FormLayout(
"right:pref, 6dlu, 50dlu, 4dlu, center:50dlu", // columns
"pref, 3dlu, pref, 3dlu, pref"); // rows
CellConstraints cc = new CellConstraints();
JPanel panel = new JPanel(layout);
panel.add(new JLabel("Label1"), cc.xy(1, 1));
panel.add(new JTextField(), cc.xywh(3, 1, 3, 1));
panel.add(new JLabel("Label2"), cc.xy(1, 3));
panel.add(new JTextField(), cc.xy(3, 3));
panel.add(new JLabel("Label3"), cc.xy(1, 5));
panel.add(new JTextField(), cc.xy(3, 5));
panel.add(new JButton("按钮!"), cc.xy(5, 5));
panel.setBorder(BorderFactory.createEmptyBorder(30, 30, 10, 30));
效果如下:
上面这段代码有两个地方需要讲一下,第一行定义了一个5行5列的layout,第一个参数是列,第二个参数是行,至于里面的参数都表示什么意思,后面再讲。
然后就将内容填入layout内,怎样填入是由CellConstraints控制的,如cc.xy(1,5)表示第一列第5行,上面的三个label分别放入的是第1、3、5行,其中2、4行做为间隔存在。第二行有个cc.xywh(3, 1, 3, 1),这个w表示colSpan,与html的table里面的colspan差不多,表示跨列,因为总共只有5列,而这列是从第3列开始的,所以就是这列表示第3,4,5共有的宽度,h则表示rowSpan,即跨行。最后一句表示此panel的边距。
由上面的代码看出,FormLayout的基本用法还是挺简单的,不过细节上的东西还是不太好理解,比如FormLayout里面那些参数的意思,这个才是布局的重点。
列与行的参数都由三个部分组成:对齐方式、固定尺寸、调整方式。
对齐方式中,列对齐有left, center, right, fill.行对齐有:top, center, bottom, fill. 其中fill表示填充至整个区域。列的默认对齐方式是fill,行是center。
关于列尺寸的问题最麻烦,有很多种单位,pref表示preferred size,即首选尺寸大小。
min表示minimum size,dlu 表示dialog units,(px, pt, in, mm, cm)分别表示Pixel, Points, Inches, Millimeter, Centimeter。
关于调整方式的用法我也不太懂,只勉强知道grow的用法,如:left:pref:grow,表示此单元格左对齐,其内容将增长到列最大的宽度为止。grow可以简写成g,而且这个grow可以这样grow(0.5),括号内是一个double的数字,当没有后面括号时默认为grow(1.0)。当然也有与grow相反的,如:none、nogrow、n。
上面内容可能一些讲得不太清楚,有机会再来完善,另外,jgoodies FormLayout还有一些其它的辅助类,例如builder目录下的一些类,其实也是比较有用的,而且用法也很简单。总体来说,jgoodies form的确很强大。
这里有篇文章对JGoodies Form参数有些介绍:
http://hi.baidu.com/whicss/blog/item/d1e7d819efbc1a76dbb4bd03.html
- 大小: 8 KB
分享到:
相关推荐
**JGoodies FormLayout** 是一个强大的 Java Swing 布局管理器,它为开发者提供了更灵活、可读性更强的方式来组织组件在容器中的布局。相比于 Swing 内置的布局管理器,如 FlowLayout、GridLayout 和 BorderLayout,...
java swing 布局所需组件formlayout所需jar包 jgoodies-common-1.6.0 jgoodies-forms-1.7.2 本人在烽火期间,使用的就是FormLayout布局,简单易用、功能强大,适用于swing企业和感兴趣的Java可视化兴趣爱好者。如果...
JFormDesigner完全支持JGoodies FormLayout , TableLayout , GridBagLayout ,和其他标准配置管理人员。先进的GridBagLayout支持允许规格的横向和纵向的差距(如TableLayout ) ,这使得设计的一种形式一致差距...
JFormDesigner完全支持JGoodies FormLayout , TableLayout , GridBagLayout , 和其他标准配置管理人员。先进的GridBagLayout支持允许规格的横向和纵向的差距(如TableLayout ) , 这使得设计的一种形式一致差距...
JGoodies Forms框架下的FormLayout为Swing提供了强大而灵活的布局解决方案,不仅简化了面板设计过程,还提高了代码的可读性和可维护性。对于追求高效、优雅界面设计的Java开发者而言,掌握FormLayout无疑是一项重要...
**JGoodies Forms框架**是一种专门为Java Swing设计的布局管理器,旨在帮助开发者高效、一致地创建优雅的用户界面。该框架由Karsten Lentzsch于2004年提出,其核心目标是简化布局设计过程,并使得复杂的布局变得易于...
3. **表单布局(FormLayout)**:FormLayout 是JGoodies Forms 库中最主要的布局管理器,它使用列和行的网格结构,允许开发者通过简单的字符串定义布局模式。这种布局方式允许更灵活的调整和扩展,使得复杂的界面...
7. **兼容性**:JGoodies Forms与标准的Java Swing完全兼容,因此可以轻松地集成到任何现有的Swing项目中。 **使用JGoodies Forms的步骤:** 1. 引入JGoodies Forms库:在项目中添加forms-1.2.1.jar或对应的依赖,...
FormLayoutMaker 是一个所见即所得的工具,使您能够使用 JGoodies FormLayout 布局管理器轻松构建 Java Swing 布局。 非常适合那些讨厌 IDE 表单构建器但需要快速强大布局的人。 ...
在UI组件方面,JGoodies Common库提供了自定义的布局管理器,如`FormLayout`,它允许开发者以表格的形式精确控制组件的位置和大小,从而实现更为美观和统一的界面设计。此外,库中还有诸如`BorderFactory`等辅助类,...
可能还会自定义组件或使用第三方库如JGoodies FormLayout来增强UI。 7. **事件处理**:通过监听器(Listener)机制,当用户与界面交互时(如点击按钮),执行相应的业务逻辑。例如,点击“借书”按钮会触发借阅流程...
FormLayoutBuilder 是一个 WYSIWYG 工具,使您能够使用 JGoodies FormLayout 布局管理器轻松构建 Java Swing 布局。 非常适合那些讨厌 IDE 表单构建器但需要快速强大布局的人。
FormLayoutMaker 是一个所见即所得的工具,使您能够使用 JGoodies FormLayout 布局管理器轻松构建 Java Swing 布局。 非常适合那些讨厌 IDE 表单构建器但需要快速强大布局的人。 ...
import com.jgoodies.forms.layout.FormLayout; import net.sourceforge.jcalendarbean.CalendarBean; import net.sourceforge.jcalendarbean.DatePicker; public class DateSelectExample { public static void ...
9. JGoodies FormLayout 10. MiGLayout 11. SpringLayout Absolute Layout Absolute Layout(又称 Null Layout)是简单的 x 轴、y 轴方向上的布局。拖动组件时带着提示组件位置和尺寸的信息,Absolute Layout 提供...
除了这两个主题库,压缩包中的`swing-layout.jar`文件是JGoodies的Swing布局管理器库,它提供了一些增强的布局策略,可以帮助开发者更好地控制组件的排列和布局,比如FormLayout,它可以方便地创建复杂的网格布局。...
在Java Swing中,界面布局往往是一个挑战,JGoodies提供了一系列的布局管理器,如FormLayout、GridBagLayout的增强版本,帮助开发者更轻松地创建美观且响应式的用户界面,提高用户体验。 项目中的“DataInterface-...