`
lippeng
  • 浏览: 455098 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

jgoodies FormLayout Demo

 
阅读更多

以前看过一点jgoodies的布局,没有深入研究。这几天画界面,越看越难看,看不下去了,就要整布局。

 

在网上找资料,中文资料几乎没有。

 

翻*墙(这2个字连在一起,居然不能发,于是加了个*)到官网找,发现那里的Demo很好看,都是没有附源码的,狂晕。。。

 

这里写几个官方白皮书里面的例子,及对应的效果:

 

FormLayout:

 

package com.lippeng.helloworld;

import java.awt.Container;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.FormLayout;

public class HelloWorld {
    public static void main(String[] args) {
        JFrame jFrame = new JFrame("HelloWorld");

        FormLayout layout = new FormLayout("pref, 4dlu, 50dlu, 4dlu, min", // columns
                "pref, 2dlu, pref, 2dlu, pref");// rows
        layout.setRowGroups(new int[][] { { 1, 3, 5 } });

        Container contentPane = jFrame.getContentPane();
        contentPane.setLayout(layout);

        CellConstraints cc = new CellConstraints();
        contentPane.add(new JLabel("Label1"), cc.xy(1, 1));
        contentPane.add(new JTextField(), cc.xyw(3, 1, 3));
        contentPane.add(new JLabel("Label2"), cc.xy(1, 3));
        contentPane.add(new JTextField(), cc.xy(3, 3));
        contentPane.add(new JLabel("Label3"), cc.xy(1, 5));
        contentPane.add(new JTextField(), cc.xy(3, 5));
        contentPane.add(new JTextField(), cc.xy(5, 5));

        jFrame.setVisible(true);
        jFrame.setSize(200, 200);
    }
}

 

效果如下:

  

DefaultFormBuilder :

 

package com.lippeng.helloworld;

import java.awt.BorderLayout;
import java.awt.Container;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

import com.jgoodies.forms.builder.DefaultFormBuilder;
import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.FormLayout;

public class HelloWorld {
    public static void main(String[] args) {
        JFrame jFrame = new JFrame("HelloWorld");

        FormLayout layout = new FormLayout(//
                "right:max(40dlu;p), 4dlu, 80dlu, 7dlu, " // 1st major column
                        + "right:max(40dlu;p), 4dlu, 80dlu", // 2nd major column
                ""); // add rows dynamically

        DefaultFormBuilder builder = new DefaultFormBuilder(layout);
        builder.setDefaultDialogBorder();

        builder.appendSeparator("Segment");
        builder.append("Identifier", new JTextField());
        builder.nextLine();
        builder.append("PTI [kW]", new JTextField());
        builder.append("Power [kW]", new JTextField());
        builder.append("len [mm]", new JTextField());
        builder.nextLine();
        builder.appendSeparator("Diameters");
        builder.append("da [mm]", new JTextField());
        builder.append("di [mm]", new JTextField());
        builder.append("da2 [mm]", new JTextField());
        builder.append("di2 [mm]", new JTextField());
        builder.append("R [mm]", new JTextField());
        builder.append("D [mm]", new JTextField());

        Container contentPane = jFrame.getContentPane();
        contentPane.setLayout(new BorderLayout());

        contentPane.add(builder.getPanel(), BorderLayout.CENTER);

        jFrame.setVisible(true);
        jFrame.setSize(600, 400);
    }
}
  

 

下面的代码,效果和上面完全一致,用的是PanelBuilder

 

package com.lippeng.helloworld;

import java.awt.BorderLayout;
import java.awt.Container;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

import com.jgoodies.forms.builder.DefaultFormBuilder;
import com.jgoodies.forms.builder.PanelBuilder;
import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.FormLayout;

public class HelloWorld {
    public static void main(String[] args) {
        JFrame jFrame = new JFrame("HelloWorld");

        FormLayout layout = new FormLayout("right:max(50dlu;p), 4dlu, 75dlu, 7dlu, right:p, 4dlu, 75dlu", "p, 2dlu, p, 3dlu, p, 3dlu, p, 7dlu, " + "p, 2dlu, p, 3dlu, p, 3dlu, p");
        PanelBuilder builder = new PanelBuilder(layout);
        builder.setDefaultDialogBorder();
        CellConstraints cc = new CellConstraints();
        builder.addSeparator("Segment", cc.xyw(1, 1, 7));
        builder.addLabel("Identifier", cc.xy(1, 3));
        builder.add(new JTextField(), cc.xy(3, 3));
        builder.addLabel("PTI [kW]", cc.xy(1, 5));
        builder.add(new JTextField(), cc.xy(3, 5));
        builder.addLabel("Power [kW]", cc.xy(5, 5));
        builder.add(new JTextField(), cc.xy(7, 5));
        builder.addLabel("len [mm]", cc.xy(1, 7));
        builder.add(new JTextField(), cc.xy(3, 7));
        builder.addSeparator("Diameters", cc.xyw(1, 9, 7));
        builder.addLabel("da [mm]", cc.xy(1, 11));
        builder.add(new JTextField(), cc.xy(3, 11));
        builder.addLabel("di [mm]", cc.xy(5, 11));
        builder.add(new JTextField(), cc.xy(7, 11));
        builder.addLabel("da2 [mm]", cc.xy(1, 13));
        builder.add(new JTextField(), cc.xy(3, 13));
        builder.addLabel("di2 [mm]", cc.xy(5, 13));
        builder.add(new JTextField(), cc.xy(7, 13));
        builder.addLabel("R [mm]", cc.xy(1, 15));
        builder.add(new JTextField(), cc.xy(3, 15));
        builder.addLabel("D [mm]", cc.xy(5, 15));
        builder.add(new JTextField(), cc.xy(7, 15));

        Container contentPane = jFrame.getContentPane();
        contentPane.setLayout(new BorderLayout());

        contentPane.add(builder.getPanel(), BorderLayout.CENTER);

        jFrame.setVisible(true);
        jFrame.setSize(600, 400);
    }
}
 

 

 

 

  • 大小: 4.1 KB
  • 大小: 7.1 KB
分享到:
评论

相关推荐

    JGoodies FormLayout

    **JGoodies FormLayout** 是一个强大的 Java Swing 布局管理器,它为开发者提供了更灵活、可读性更强的方式来组织组件在容器中的布局。相比于 Swing 内置的布局管理器,如 FlowLayout、GridLayout 和 BorderLayout,...

    java swing 布局所需组件formlayout所需jar包 GUI FormLayout

    java swing 布局所需组件formlayout所需jar包 jgoodies-common-1.6.0 jgoodies-forms-1.7.2 本人在烽火期间,使用的就是FormLayout布局,简单易用、功能强大,适用于swing企业和感兴趣的Java可视化兴趣爱好者。如果...

    JGoodies look demo

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

    JFormDesigner 最新版本

    JFormDesigner完全支持JGoodies FormLayout , TableLayout , GridBagLayout ,和其他标准配置管理人员。先进的GridBagLayout支持允许规格的横向和纵向的差距(如TableLayout ) ,这使得设计的一种形式一致差距...

    JFormDesigner Eclipse、NetBeans等的开发插件

    JFormDesigner完全支持JGoodies FormLayout , TableLayout , GridBagLayout , 和其他标准配置管理人员。先进的GridBagLayout支持允许规格的横向和纵向的差距(如TableLayout ) , 这使得设计的一种形式一致差距...

    The JGoodies Forms Framework

    **FormLayout**是JGoodies Forms框架的核心组件,它提供了一种基于表格形式的布局模型,允许开发者以直观且灵活的方式定义面板中的元素位置和大小。与传统的Swing布局管理器相比,FormLayout在处理复杂布局时具有...

    JGoodies Forms

    3. **表单布局(FormLayout)**:FormLayout 是JGoodies Forms 库中最主要的布局管理器,它使用列和行的网格结构,允许开发者通过简单的字符串定义布局模式。这种布局方式允许更灵活的调整和扩展,使得复杂的界面...

    jgoodies源码jar包(Java)

    jGoodies由Karsten Lentzsch创建,包含了多个子模块,如jgoodies-binding、jgoodies-common、jgoodies-forms以及jgoodies-looks,每个子模块都有其独特的功能和应用场景。本文将详细介绍这些模块的主要功能,并探讨...

    JGoodies的所有文件

    这个压缩包包含的文件涵盖了JGoodies的多个模块,如 **forms-1_2_1**、**looks-2_2_0**、**binding-2_0_5**、**animation-1_2_0** 和 **validation-2_0_1**,以及一个运行的Demo——**looksdemo-2.2.0**。...

    jgoodies-looksJava Feel&look

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

    jgoodies最新免费版

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

    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 looks & feel

    **Java UI设计与JGoodies Looks & Feel** 在Java编程中,用户界面(UI)的设计是应用程序的关键组成部分,它直接影响到用户体验。Java Swing提供了一种跨平台的方式来创建图形用户界面,但其默认的LookAndFeel可能...

    formlayout详细讲解

    JGoodies Forms框架下的FormLayout为Swing提供了强大而灵活的布局解决方案,不仅简化了面板设计过程,还提高了代码的可读性和可维护性。对于追求高效、优雅界面设计的Java开发者而言,掌握FormLayout无疑是一项重要...

    formlayoutmakerx-rc8.2.1.jar

    FormLayoutMaker 是一个所见即所得的工具,使您能够使用 JGoodies FormLayout 布局管理器轻松构建 Java Swing 布局。 非常适合那些讨厌 IDE 表单构建器但需要快速强大布局的人。 ...

    JGoodies Validation

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

    JGoodies Common

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

    JGoodies Binding

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

    JGoodies Forms 1.2.1

    2. 定义布局规则:使用`FormLayout`类创建布局,通过`ColumnSpec`和`RowSpec`定义列和行的规则。 3. 添加组件:将Swing组件添加到布局中,通过指定约束来确定其位置和大小。 4. 数据绑定:使用`BeanBinding`类将组件...

    jgoodies-common-1_8_0.zip

    在UI组件方面,JGoodies Common库提供了自定义的布局管理器,如`FormLayout`,它允许开发者以表格的形式精确控制组件的位置和大小,从而实现更为美观和统一的界面设计。此外,库中还有诸如`BorderFactory`等辅助类,...

Global site tag (gtag.js) - Google Analytics