`

JGoodies Form参数详解

 
阅读更多

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%也是一樣。下面的圖說明一切...


分享到:
评论

相关推荐

    JGoodies Form

    SwingHacks #36节中所用到的JGoodies的包:forms-1.0.5.jar

    jgoodies-looksJava Feel&look

    《深入解析jgoodies-looksJava Feel&look》 在Java GUI编程中,美观的界面设计是提升用户体验的重要因素之一。jgoodies-looks库,作为一款强大的Java外观(Look and Feel)框架,为开发者提供了丰富的UI样式选择,...

    jgoodies源码jar包(Java)

    《深入解析jgoodies源码:Java开发者的宝藏库》 在Java开发领域,jGoodies库是一个不可或缺的工具集,它提供了丰富的组件和实用工具,极大地提升了开发效率。jGoodies由Karsten Lentzsch创建,包含了多个子模块,如...

    jgoodies looks & feel

    3. **自定义选项**:开发者可以通过配置参数来自定义LookAndFeel的颜色、字体、边框等细节,满足特定设计需求。 4. **兼容性**:JGoodies Looks 兼容Java Swing的各种组件,可以无缝地替换默认LookAndFeel,无需...

    JGoodies Forms

    JGoodies Forms 是一个专为Java用户界面设计的库,由Karsten Lentzsch 创建,它提供了一种强大的、声明性的方法来构建美观且功能丰富的GUI(图形用户界面)。这个库主要关注于布局管理和组件对齐,使得开发者能够更...

    jgoodies最新免费版

    JGoodies是一款强大的Java库,由Karsten Lentzsch开发,它包含了一系列的组件和工具,主要用于GUI(图形用户界面)设计、数据绑定、表单验证以及其他的实用功能。这款库在Java社区中广受欢迎,因为它提供了丰富的UI...

    JGoodies Validation

    **JGoodies Validation** 是一个基于Java的库,专门用于实现用户界面(UI)验证功能。这个库由JGoodies公司开发,旨在帮助开发者轻松创建符合设计模式的、具有强大验证能力的用户界面。JGoodies Validation的核心...

    JGoodies的所有文件

    **JGoodies** 是一套由Java开发者Karsten Lentzsch创建的开源库,它提供了丰富的UI组件和设计工具,以增强Java Swing应用的外观和功能。这个压缩包包含的文件涵盖了JGoodies的多个模块,如 **forms-1_2_1**、**looks...

    The JGoodies Forms Framework

    ### JGoodies Forms框架知识点详解 #### 一、引言 **JGoodies Forms框架**是一种专门为Java Swing设计的布局管理器,旨在帮助开发者高效、一致地创建优雅的用户界面。该框架由Karsten Lentzsch于2004年提出,其...

    jgoodies全部jar包和源码下载

    上次没有传完,这次将所有jar文件和源码打成zip包。...jgoodies-binding-2_2_1.zip jgoodies-common-1_1_1.zip jgoodies-forms-1_4_0.zip jgoodies-looks-2_4_0.zip jgoodies-validation-2_2_0.zip

    JGoodies Common

    **JGoodies Common** 是一个Java用户界面设计库,它为开发者提供了丰富的工具和组件,以简化和增强Java应用程序的用户界面(UI)开发。这个库由JGoodies公司创建,旨在提供一种更加高效和优雅的方式来构建现代、美观...

    JGoodies Binding

    **JGoodies Binding** 是一个Java用户界面设计库,它专注于数据绑定技术,使得开发者能够更轻松地在Java Swing组件和应用程序模型之间建立双向数据绑定。这个库是JGoodies系列库的一部分,由Karsten Lentzsch开发,...

    JGoodies look demo

    **JGoodies Look Demo**是基于Java Swing的一个高级外观组件库,主要目的是为了提升Swing应用的用户界面视觉效果和交互体验。这个组件库由JGoodies公司开发,提供了多种可定制的外观风格,使得开发者可以轻松地为...

    JGoodies Looks

    JGoodies Looks 是一个著名的 Java 用户界面设计库,专为提升 Java Swing 应用程序的外观和感觉而设计。它提供了多种视觉样式,让开发者能够轻松地改变应用程序的外观,使其更加吸引人和专业。JGoodies Looks 不仅...

    一个神奇的swing软件Jgoodies

    ** Swing软件Jgoodies详解 ** Swing是Java的一个图形用户界面(GUI)工具包,它扩展了Java Foundation Classes (JFC),提供了丰富的组件和高级功能,使得开发者能够创建美观且功能强大的桌面应用。Jgoodies是由...

    jgoodies-common-1_8_0.zip

    《JGoodies Common库详解——探索1.8.0版本》 JGoodies Common库是Java开发者们常用的一个工具包,它提供了丰富的组件和实用工具类,极大地简化了日常开发中的许多常见任务。这个名为“jgoodies-common-1_8_0.zip”...

    jgoodies programming

    《使用JGoodies进行Java图形用户界面开发》 在Java编程领域,开发用户友好的图形用户界面(GUI)是一项至关重要的任务。为了简化这一过程,许多开发者选择利用第三方库,如JGoodies,来增强其GUI设计能力。JGoodies...

    可以工作在中文环境下的jgoodies look and feel

    可以工作在中文环境下的jgoodies look and feel。jgoodies官方提供的包在中文环境下是没法运行的,都是乱码。我修改了源码,可以在中文环境下正常显示中文。

    jgoodies-forms-1.8.0.jar

    官方jgoodies-forms-1.8.0.jar包,可直接导入到项目中使用

    JGoodies Look and Feel

    **JGoodies Look and Feel** 是一款开源的Java Swing组件库,它提供了丰富的用户界面(UI)外观和感觉,使得开发者能够为Java应用程序定制出更加美观、统一且具有跨平台一致性的用户界面。JGoodies Look and Feel是...

Global site tag (gtag.js) - Google Analytics