`

SWT/JFace的工具类

阅读更多

自己写的一个SWT/JFace的工具类,有了它,构建Label,Button,Composite,Group等等的基础组件,就变得很容易了。

 

/**
 * 布局均为GridLayout,GridData
 * 
 * @author TigerChen
 * 
 */
public class UIFactory {

    /**
     * 防止Text被撑大,而给它设置的一个默认的widthHint
     */
    public static final int SIZING_TEXT_FIELD_WIDTH = 80;

    public static Label createLabel(Composite parent, int style, String text, GridData data) {
        Label label = new Label(parent, style);
        label.setText(text);
        label.setLayoutData(data);
        return label;
    }

    public static Label createLabel(Composite parent, int style, String text, int horizontalSpan) {
        Label label = new Label(parent, style);
        label.setText(text);
        GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
        gd.horizontalSpan = horizontalSpan;
        label.setLayoutData(gd);
        return label;
    }

    public static Label createLabel(Composite parent, String text) {
        return createLabel(parent, text, 1, GridData.HORIZONTAL_ALIGN_BEGINNING);
    }

    /**
     * 创建特定字体的标签
     * 
     * @param parent
     * @param text
     * @param font 字体
     * @return
     */
    public static Label createLabel(Composite parent, String text, Font font) {
        Label label = createLabel(parent, text);
        label.setFont(font);

        return label;
    }

    public static Label createLabel(Composite parent, String text, int horizontalSpan) {
        return createLabel(parent, text, horizontalSpan, GridData.HORIZONTAL_ALIGN_BEGINNING);
    }

    /**
     * 创建特定字体的标签
     * 
     * @param parent
     * @param text
     * @param horizontalSpan
     * @param font 字体
     * @return
     */
    public static Label createLabel(Composite parent, String text, int horizontalSpan, Font font) {
        Label label = createLabel(parent, text, horizontalSpan);
        label.setFont(font);

        return label;
    }

    public static Label createLabel(Composite parent, String text, int horizontalSpan, int gridData) {
        Label label = new Label(parent, SWT.NONE);
        label.setText(text);
        GridData gd = new GridData(gridData);
        gd.horizontalSpan = horizontalSpan;
        label.setLayoutData(gd);
        return label;
    }

    public static Label createLabel(Composite parent, String text, GridData gd) {
        Label label = new Label(parent, SWT.NONE);
        label.setText(text);
        label.setLayoutData(gd);
        return label;
    }

    public static Label createLabel(Composite parent, int style, String text) {
        Label label = new Label(parent, style);
        label.setText(text);
        GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
        label.setLayoutData(gd);
        return label;
    }

    public static Label createTopLabel(Composite parent, String text) {
        Label topLabel = UIFactory.createLabel(parent, SWT.TOP, text);
        GridData desGd = (GridData) topLabel.getLayoutData();
        desGd.verticalAlignment = SWT.TOP;
        topLabel.setLayoutData(desGd);
        return topLabel;
    }

    public static Label createSeparatorLabel(Composite parent, int horizontalSpan) {
        Label sepLabel = new Label(parent, SWT.SEPARATOR | SWT.HORIZONTAL);
        GridData data = new GridData(GridData.FILL_HORIZONTAL);
        sepLabel.setLayoutData(data);
        data.horizontalSpan = horizontalSpan;
        return sepLabel;
    }

    public static Label createSeparatorLabel(Composite parent) {
        return createSeparatorLabel(parent, 1);
    }

    public static Text createText(Composite parent, int style, GridData data) {
        Text txt = new Text(parent, style);
        txt.setLayoutData(data);
        return txt;
    }

    public static Text createText(Composite parent, int style, int horizontalSpan) {
        GridData gd = new GridData(GridData.FILL_HORIZONTAL);
        gd.widthHint = SIZING_TEXT_FIELD_WIDTH;
        gd.horizontalSpan = horizontalSpan;
        return createText(parent, style, gd);
    }

    public static Text createText(Composite parent) {
        return createText(parent, SWT.BORDER);
    }

    public static Text createText(Composite parent, int style) {
        Text text = new Text(parent, style);
        GridData gd = new GridData(GridData.FILL_HORIZONTAL);
        gd.widthHint = SIZING_TEXT_FIELD_WIDTH;
        text.setLayoutData(gd);
        return text;
    }

    public static Group createGroup(Composite parent, int style, String text, int colnum, GridData data) {
        Group group = new Group(parent, style);
        group.setText(text);
        group.setLayout(new GridLayout(colnum, false));
        group.setLayoutData(data);
        return group;

    }

    public static Group createGroup(Composite parent, int sytle, String text, int colnum) {
        return createGroup(parent, sytle, text, colnum, 1);
    }

    public static Group createGroup(Composite parent, int sytle, String text, int colnum, int horizontalSpan) {
        GridData gd = new GridData(GridData.FILL_BOTH);
        gd.horizontalSpan = horizontalSpan;
        return createGroup(parent, sytle, text, colnum, gd);
    }

    public static Group createGroup(Composite parent,
                                    int sytle,
                                    String text,
                                    int colnum,
                                    int horizontalSpan,
                                    int gridData) {
        GridData gd = new GridData(gridData);
        gd.horizontalSpan = horizontalSpan;
        return createGroup(parent, sytle, text, colnum, gd);
    }

    public static Button createButton(Composite parent, int style, String text, GridData data) {
        Button btn = new Button(parent, style);
        btn.setText(text);
        btn.setLayoutData(data);
        return btn;
    }

    public static Button createButton(Composite parent, int style, String text, int horizontalSpan) {
        GridData gd = new GridData(GridData.FILL_HORIZONTAL);
        gd.horizontalSpan = horizontalSpan;
        return createButton(parent, style, text, gd);
    }

    public static Button createButton(Composite parent, String text) {
        return createButton(parent, SWT.PUSH, text);
    }

    public static Button createButton(Composite parent, String text, Image image) {
        Button button = createButton(parent, SWT.PUSH, text);
        button.setImage(image);
        return button;
    }

    public static Button createButton(Composite parent, Image image) {
        Button button = new Button(parent, SWT.PUSH);
        button.setImage(image);
        return button;
    }

    public static Button createButton(Composite parent, int style, String text) {
        Button btn = new Button(parent, style);
        btn.setText(text);
        return btn;
    }

    public static Composite createComposite(Composite parent, int style, int colnum, GridData data) {
        Composite comp = new Composite(parent, style);
        comp.setLayout(new GridLayout(colnum, false));
        comp.setLayoutData(data);
        return comp;
    }

    public static Composite createComposite(Composite parent, int style, int colnum, int horizontalSpan) {
        return createComposite(parent, style, colnum, horizontalSpan, GridData.FILL_BOTH);
    }

    public static Composite createComposite(Composite parent, int style, int colnum, int horizontalSpan, int gridData) {
        GridData gd = new GridData(gridData);
        gd.horizontalSpan = horizontalSpan;
        return createComposite(parent, style, colnum, gd);
    }

    public static Composite createComposite(Composite parent, int style, int colnum) {
        Composite comp = new Composite(parent, style);
        GridData gd = new GridData(GridData.FILL_BOTH);
        gd.horizontalSpan = 1;
        comp.setLayout(new GridLayout(colnum, false));
        comp.setLayoutData(gd);
        return comp;
    }

    public static Composite createCompositeMini(Composite parent, int style, int colnum, GridData data) {
        Composite comp = new Composite(parent, style);
        GridLayout gl = new GridLayout(colnum, false);
        gl.marginWidth = 0;
        gl.marginHeight = 0;
        comp.setLayout(gl);
        comp.setLayoutData(data);
        return comp;
    }

    public static Composite createCompositeMini(Composite parent, int style, int colnum, int horizontalSpan) {
        GridData gd = new GridData(GridData.FILL_BOTH);
        gd.horizontalSpan = horizontalSpan;
        return createCompositeMini(parent, style, colnum, gd);
    }

    public static Composite createCompositeMini(Composite parent,
                                                int style,
                                                int colnum,
                                                int horizontalSpan,
                                                int gridData) {
        GridData gd = new GridData(gridData);
        gd.horizontalSpan = horizontalSpan;
        return createCompositeMini(parent, style, colnum, gd);
    }

    public static Composite createCompositeMini(Composite parent, int style, int colnum) {
        return createCompositeMini(parent, style, colnum, 1);
    }

    public static Combo createCombo(Composite parent, int style, int horizontalSpan) {
        Combo combo = new Combo(parent, style);
        GridData gd = new GridData(GridData.FILL_HORIZONTAL);
        gd.horizontalSpan = horizontalSpan;
        combo.setLayoutData(gd);
        return combo;
    }

    public static Combo createCombo(Composite parent, int style) {
        Combo combo = new Combo(parent, style);
        GridData gd = new GridData(GridData.FILL_HORIZONTAL);
        combo.setLayoutData(gd);
        return combo;
    }


    public static Text createBigText(Composite container, int horizontalSpan) {
        Text descTxt = UIFactory.createText(container, SWT.MULTI | SWT.BORDER | SWT.WRAP | SWT.V_SCROLL, 2);
        GridData desGd = (GridData) descTxt.getLayoutData();
        int heightHint = 5 * descTxt.getLineHeight();
        desGd = new GridData(GridData.FILL_BOTH);
        desGd.widthHint = SIZING_TEXT_FIELD_WIDTH;
        desGd.heightHint = heightHint;
        desGd.horizontalSpan = horizontalSpan;
        descTxt.setLayoutData(desGd);
        return descTxt;
    }

    /**
     * 创建指定初始宽度和高度的输入框
     * 
     * @param container 父容器
     * @param horizontalSpan 占位
     * @param width 指定的宽度
     * @param height 指定的高度
     * @return 返回输入框的引用
     */
    public static Text createBigText(Composite container, int horizontalSpan, int width, int height) {
        Text descTxt = UIFactory.createText(container, SWT.MULTI | SWT.BORDER | SWT.WRAP | SWT.V_SCROLL, 2);
        GridData desGd = (GridData) descTxt.getLayoutData();
        desGd = new GridData(GridData.FILL_BOTH);
        desGd.widthHint = width;
        desGd.heightHint = height;
        desGd.horizontalSpan = horizontalSpan;
        descTxt.setLayoutData(desGd);
        return descTxt;
    }

    /**
     * 弹出警告信息,非主线程也提供了支持。
     * 
     * @param message 警告信息内容
     */
    public static void openWarning(String message) {
        open(MessageDialog.WARNING, "Warning", message);
    }

    public static void openWarning(String title, String message) {
        open(MessageDialog.WARNING, title, message);
    }

    public static void openMessage(String title, String message) {
        open(MessageDialog.INFORMATION, title, message);
    }

    public static void openError(String title, String message) {
        open(MessageDialog.ERROR, title, message);
    }

    /**
     * 弹出信息,非主线程也提供了支持。
     * 
     * @param kind the kind of dialog to open, one of {@link #ERROR}, {@link #MessageDialog.INFORMATION}, {@link #MessageDialog.QUESTION},
     *            {@link #MessageDialog.WARNING}, {@link #MessageDialog.CONFIRM}, or {@link #MessageDialog.QUESTION_WITH_CANCEL}.
     * @param title
     * @param message
     */
    public static void open(final int kind, final String title, final String message) {
        if (message == null || "".equals(message)) {
            return;
        }

        if (Display.getCurrent() != null) {
            Display display = Display.getCurrent();
            Shell shell = display.getActiveShell();
            MessageDialog.open(kind, shell, title, message, SWT.NONE);
        } else {
            Display.getDefault().syncExec(new Runnable() {

                public void run() {
                    Display display = Display.getCurrent();
                    Shell shell = display.getActiveShell();
                    MessageDialog.open(kind, shell, title, message, SWT.NONE);
                }

            });
        }
    }

    public static ControlDecoration createDecoration(Control control, int style) {

        ControlDecoration decoration = new ControlDecoration(control, style);
        // decoration.setImage(ESBAdminImages.getImage(ESBAdminImages.IMG_LIGHT_TIP));
        decoration.hide();

        return decoration;
    }

    public static ControlDecoration createDecoration(Control control) {

        return createDecoration(control, SWT.LEFT | SWT.TOP);
    }
    
    public static Control createEmptyLine(Composite parent) {
        Label label = new Label(parent, SWT.LEFT);
        GridData gd = new GridData();
        gd.horizontalAlignment = GridData.BEGINNING;
        gd.grabExcessHorizontalSpace = false;
        gd.horizontalSpan = ((GridLayout) parent.getLayout()).numColumns;
        gd.horizontalIndent = 0;

        label.setLayoutData(gd);
        return label;
    }

}
分享到:
评论

相关推荐

    swt/jface.jar

    标题中的"swt/jface.jar"是一个关键组件,它在Java开发环境中用于构建用户界面。SWT(Standard Widget Toolkit)是IBM开发的一个开源GUI库,它提供了与原生操作系统更紧密集成的图形用户界面控件。JFace是建立在SWT...

    SWT/Jface API 3.4

    SWT-JFace-3.4-API-.chm 文件很可能是 SWT 和 JFace API 的离线文档,包含了详细的类、方法和示例,是学习和开发过程中不可或缺的参考资料。通过深入学习这个 API 文档,开发者可以充分利用 SWT 和 JFace 的功能,...

    SWT/JFace专题 --- SWT/JFace概述

    9. SWT和JFace的API使用:通过Swt_Jface+API.chm这个帮助文档,可以详细了解每个类和方法的功能和用法。 学习SWT和JFace,开发者不仅可以创建出高性能、美观的Java GUI应用,还能充分利用Eclipse的生态系统,如插件...

    SWT/JFACE客户端登录窗口例子

    SWT 是一个底层的 GUI 工具包,它提供了与操作系统直接交互的能力,使得应用程序能够拥有原生的外观和感觉。JFace 则是建立在 SWT 之上的高级抽象层,它简化了界面设计,减少了代码量,让开发者更加专注于业务逻辑。...

    SWT/JFace学习文档

    在SWT基础上,JFace引入了ApplicationWindow类,它提供了更方便的窗口管理,包括菜单、工具栏和状态栏的创建。此外,JFace的数据绑定允许数据模型与UI控件直接关联,简化了数据的处理和展示。 3. SWT/JFACE 各常用...

    swt/jface实例开发

    【SWT/JFace实例开发】是一份针对Java GUI编程的学习资源,主要聚焦于SWT(Standard Widget Toolkit)和JFace这两个强大的图形用户界面库。SWT是Eclipse项目的一部分,它提供了一套与操作系统直接交互的原生控件,...

    SWT/JFace从入门到精通

    通过深入学习和实践,你可以掌握SWT/JFace的精髓,从而能够熟练地使用这些工具来构建高效、美观的Eclipse插件或者独立的Java桌面应用。《Eclipse从入门到精通》这本书无疑是学习SWT/JFace的宝贵资源,它将引导你逐步...

    SWT/JFace 3.5 API (HTML)

    SWT和JFace的API文档详细列出了所有可用的类、方法和属性,以及它们的参数、返回值和使用示例,为开发者提供了详细的参考。 4. HTML格式:HTML(HyperText Markup Language)是网页的标准标记语言,用于组织网页...

    SWT/JFACE API

    6. **命令框架**:JFace的命令框架允许开发者定义和执行可扩展的用户操作,如菜单项和工具栏按钮。 结合使用SWT和JFace,开发者可以创建高效且用户友好的Java GUI应用,同时保持代码简洁和可维护。学习和熟练掌握这...

    Eclipse SWT/JFace 书中 全部实例

    在这里,它可能包含了实现Eclipse SWT和JFace实例的类。每个实例可能是一个独立的功能模块,例如,展示如何使用SWT控件、如何创建对话框、如何实现数据绑定等。 "firstSWT"可能是第一个SWT示例的目录或文件,通常...

    Eclipse swt/jface核心应用源码(带视频)

    Eclipse SWT (Standard Widget Toolkit) 和 JFace 是两个在Java编程环境下用于构建图形用户界面(GUI)的重要库,尤其在开发Eclipse插件和RCP(Rich Client Platform)应用程序时非常常见。SWT是Eclipse项目的一个...

    swt/jface api帮助文档

    SWT是Java的一个GUI(图形用户界面)工具包,它提供了一种低级别的、与平台相关的API,用于创建桌面应用程序。SWT设计的目的是为了克服Java AWT和Swing的性能问题,通过直接调用操作系统提供的原生控件来实现高效的...

    Eclipse SWT/JFace 核心应用的全部源代码

    SWT提供了诸如按钮、文本框、列表、树等基本控件,以及对话框、菜单和工具栏等更复杂的元素。源代码中,你可以看到如何实现这些控件的绘制、事件处理以及与其他组件的交互,这对于深入理解GUI编程和优化界面性能非常...

    eclipse swt/jface核心应用

    JFace提供了创建和管理视图和编辑器的工具类。 5. **对话框和小部件**:JFace提供了一些预定义的对话框,如MessageDialog、InputDialog等,以及自定义对话框的构建基础,如Shell和Composite。 6. **表单和表单构建...

    swt/jface mdi

    在 SWT/JFace 中,可以通过 `org.eclipse.swt.widgets.Shell` 类创建此框架,并通过设置其属性来实现 MDI 支持。 2. **MDI 子窗口**:这些是用户可以在 MDI 框架内打开的窗口,通常用 `org.eclipse.swt.widgets....

    SWT/JFace 3.5 API (CHM)

    这篇文档将深入探讨SWT和JFace 3.5版本的API,帮助开发人员更好地理解和利用这些工具。 1. SWT(Standard Widget Toolkit):SWT是Eclipse的基础UI库,它直接与操作系统进行交互,提供了与平台相关的控件,如按钮、...

    SWT/JFace分页

    这个文件可能包含了一些辅助工具类,用于简化SWT和JFace的分页实现,比如提供分页控件、数据加载和页面切换的封装。`xxx.txt`可能是文档或示例代码,帮助理解如何使用这些工具。 总结,"SWT/JFace分页"涉及到使用...

    SWT/jface in action 相关pdf文档(中文版)

    - **Eclipse 的 SWT 和 JFace 应用程序:** 可以在 Eclipse IDE 内部开发基于 SWT 和 JFace 的应用程序,利用 Eclipse 的强大工具进行调试和测试。 - **独立应用程序:** 也可以构建独立的 SWT/JFace 应用程序,这些...

    基于Swt/Jface图片工厂实现

    手写基于Swt/Jface图片工厂实现图片传输界面更新。应用于项目中的工具类,供大家学习参考。提供一种新的学习思路。

Global site tag (gtag.js) - Google Analytics