`
eclipsesbs
  • 浏览: 20177 次
社区版块
存档分类
最新评论

第八天:那SWT提供了哪些对话框呢

阅读更多

作者:梁祺 (eclipsesbs@gmail.com)

 

来自:http://www.benisoft.net/day8/index.html

 

SWT提供了一系列对话框类,帮助我们调用哪些和操作系统密切相关的对话框,这些对话框有:

  • FileDialog:打开或保存文件。
  • DirectoryDialog:选取目录。
  • ColorDialog:选取颜色。
  • FontDialog:选取字体。
  • MessageBox:和MessageDialog类似。
  • PrintDialog:打印对话框,就不在这里介绍了。

这些对话框都是SWT直接调用操作系统的原生对话框,所以在不同操作系统下,它们的外观各不相同。 这里例子是在Mac OSX下截取屏幕获得的,所以和Windows和Linux下的看起来不太一样。

FileDialog

FileDialog用于选择一个或多个文件打开,或者选择一个文件保存。这个对话框本身并不从事文件打开或保存的动作, 只是帮助用户选择文件(包括它所在的目录),但是文件打开和保存在语义上略有差别, 比如文件保存可能会提示用户是否需要覆盖一个在磁盘上已经存在的文件,所以文件打开和保存我们都会演示一下。 首先是文件打开。

在创建FileDialog对象时,需要指定SWT.OPEN用于文件打开,如果需要打开多个文件,还需要指定SWT.MULTI。 在打开对话框之前,还有一系列参数需要设置。

  • setFileName:如果打开的文件有缺省名字,可以调用这个方法设置缺省文件名来提示用户。
  • setFilterExtensions:设置用于过滤的文件后缀名,它需要和setFilterNames(...)对应。
  • setFilterIndex:如果缺省的用于文件过滤的后缀不是setFilterExtensions的第一个后缀名, 可以设置这个参数修改。
  • setFilterNames:设置用于显示的文件过滤器名称,它需要和setFilterEtensions对应。
  • setFilterPath:设置缺省的文件路径。
  • setText:设置对话框标题。

接下来就可调用open()方法打开对话框,检查返回的文件名(用户选择的第一个文件)是不是null, 如果使用了SWT.MULTI,需要使用getFileNames()方法获得用户选择的所有文件。

        FileDialog dialog = new FileDialog(window.getShell(), SWT.OPEN
                | SWT.MULTI);
        dialog.setFileName("file.png");
        dialog.setFilterExtensions(new String[] { "html""png""*" });
        dialog.setFilterIndex(1);
        dialog.setFilterNames(new String[] { "HTML Files (*.html)",
                "PNG Files (*.png)""All Files (*.*)" });
        dialog.setFilterPath("/Users/liangi/Documents/site");
        dialog.setText("Open PNG File");
        String files = dialog.open();
        if (files != null) {
            MessageDialog.openInformation(window.getShell(), "Day8",
                    Arrays.toString(dialog.getFileNames()));
        }

接下来是使用FileDialog选择文件用于保存。这和使用FileDialog选择文件用于打开非常类似, 首先把SWT.OPEN改为SWT.SAVE,其次设置setOverwrite(true)以便提示用户是否需要覆盖已存在磁盘上的文件。

        dialog = new FileDialog(window.getShell(), SWT.SAVE);
        dialog.setFileName("file.png");
        dialog.setFilterExtensions(new String[] { "html""png""*" });
        dialog.setFilterIndex(1);
        dialog.setFilterNames(new String[] { "HTML Files (*.html)",
                "PNG Files (*.png)""All Files (*.*)" });
        dialog.setFilterPath("/Users/liangi/Documents/site");
        dialog.setText("Save File");
        files = dialog.open();
        if (files != null) {
            MessageDialog.openInformation(window.getShell(), "Day8",
                    files);
        }

ColorDialog

ColorDialog的使用非常简单。创建ColorDialog对象,然后调用ColorDialog.open()方法, 该方法会返回用户所选择的颜色的RGB值。

    public void run(IAction action) {
        ColorDialog dialog = new ColorDialog(window.getShell());
        RGB rgb = dialog.open();
        if (rgb != null) {
            MessageDialog.openInformation(window.getShell(), \"Day8\",
                    rgb.toString());
        }
    }

FontDialog

FontDialog的使用也很简单。创建FontDialog对象,然后调用FontDialog.open()方法, 该方法会返回用户选择的字体的FontData对象。至于FontData,我们会和颜色,图片一起在GUI资源里介绍。

    public void run(IAction action) {
        FontDialog dialog = new FontDialog(window.getShell());
        FontData fontData = dialog.open();
        if (fontData != null) {
            MessageDialog.openInformation(window.getShell(), \"Day8\",
                    fontData.toString());
        }
    }

MessageBox

MessageBox和MessageDialog的功能类似,只不过MessageBox是由SWT提供的,MessageDialog由JFace提供。 一般情况下,我们使用MessageDialog的机会更多一些。这里简单提一下,具体开发时还是推荐使用MessageDialog。

    public void run(IAction action) {
        MessageBox dialog = new MessageBox(window.getShell(), SWT.OK
                | SWT.CANCEL | SWT.ICON_INFORMATION | SWT.APPLICATION_MODAL);
        dialog.setMessage(\"Hello from MessageBox.\");
        int result = dialog.open();
        if (SWT.OK == result) {
            // OK is pressed
        }
    }

这里我们介绍了一些需要调用操作系统功能的对话框,这些对话框在不同操作系统上外观和功能都很不相同, Eclipse SWT通过这些对话框类,为Eclipse应用程序提供统一编程接口。

分享到:
评论

相关推荐

    java swt 第三部分

    3. **对话框**:SWT提供了各种类型的对话框,如消息对话框、文件选择对话框等,这些对话框可以增强用户交互性。 4. **表单和数据绑定**:SWT结合JFace库可以实现数据模型与用户界面之间的双向绑定,使得用户界面的...

    SWT JFace in Action - GUI Design with Eclipse 3.0-1932394273

    - **第8章:处理树和列表**:聚焦于树形视图和列表视图的实现,讨论了如何高效地管理和展示大量的数据项。 - **第9章:表格和菜单**:讲解了表格控件和菜单的设计方法,以及如何利用它们提高用户交互体验。 - **第10...

    SWT的文档,以及Swt的教程简介

    1. **安装和设置**: 如何在开发环境中添加SWT库,并创建第一个SWT程序。 2. **基本控件**: 如Button、Text、Label、Composite等的使用方法,以及它们的属性和事件处理。 3. **布局管理**: 学习如何使用不同的布局...

    SWT/JFACE in Action

    - **标准对话框**: SWT提供了多种预定义的对话框,如FileDialog、InputDialog等,用于执行常见任务。 - **自定义对话框**: 也支持开发者自定义对话框,以满足特殊的需求。 #### 11. 向导 - **Wizard框架**: JFace...

    SWT界面设计PDF

    在"第十八章.图形界面开发--AWT,Swing,SWT.pdf"中,你会了解到SWT与AWT和Swing的区别。AWT是Java最初的GUI库,基于原生系统组件,但其可移植性较差;Swing则使用轻量级组件,提供跨平台一致性,但性能可能不如...

    Eclipse Swt/Jface核心应用 (19-23章)

    6. **对话框和消息框**:Eclipse SWT提供了各种对话框,如OpenDialog、SaveDialog、MessageDialog等,用于获取用户输入或显示提示信息。开发者需要学习如何创建和配置这些对话框。 7. **数据绑定**:JFace的数据...

    Apress - The Definitive Guide To Swt And Jface

    - **第8章**:高级控件,介绍更复杂的功能控件如表格、树等。 - **第9章**:自定义控件的开发,教授如何创建自己的控件并扩展SWT的功能。 - **第10章**:图形绘制,学习如何使用SWT进行图形绘制操作。 - **第11...

    swt_designer程序设计教程

    2. 开始使用:介绍如何启动可视化设计模式,以及创建第一个SWT项目。 3. 基本控件使用:讲解各种SWT和JFace控件的使用方法,如Button、Label、Text、Table等。 4. 布局管理:深入探讨各种布局管理器的使用技巧,以及...

    Eclipse SWT/JFace 书中 全部实例

    Eclipse SWT(Standard Widget Toolkit)和JFace是用于构建Java GUI应用程序的强大工具,它们与Eclipse IDE紧密集成,提供了一套丰富的控件和抽象层,使得开发者能够创建出功能丰富的桌面应用。本压缩包包含的"全部...

    Eclipse Swt/Jface核心应用 (04-08章)

    第8章:对话框和表单 在这一章,我们将学习如何使用JFace创建各种对话框,包括消息对话框、输入对话框以及自定义的复杂表单。JFace提供了强大的表单构建工具,使得创建带有验证和数据绑定的表单变得简单易行。 总结...

    Eclipse SWT_JFace开发实战精解随书光盘源代码

    3. 对话框和小部件:包括消息对话框、输入对话框,以及自定义对话框的实现。 4. 数据绑定:利用JFace的DataBinding机制,实现模型和视图之间的数据同步。 5. 表格和视图:如何创建和管理表格控件,展示和编辑数据。 ...

    Eclipse Swt/Jface核心应用 (09-09章)

    在Swt的基础上,Jface提供了一层抽象,简化了UI开发,通过提供数据绑定、视图模式、对话框等高级功能,使得代码编写更加简洁和模块化。 在第9章到第19章的内容中,我们可以预见到以下几个重要的知识点: 1. **Swt...

    Eclipse Swt/Jface核心应用 (14-19章)

    Eclipse SWT(Standard Widget Toolkit)和JFace是用于构建Java GUI应用程序的强大工具,它们与Eclipse IDE紧密集成,提供了一套丰富的用户界面组件和高级抽象层。本资料主要涵盖了Eclipse SWT/JFace的核心应用,...

    SwtJfaceInAction

    8. **图形绘制**:介绍了如何利用SWT提供的绘图API进行图形绘制,包括颜色、线型、字体、图像等元素的使用。 9. **树和列表**:涵盖了如何使用SWT的Tree和List控件来展示层次结构的数据,以及如何进行增删改查操作...

    陈刚《Eclipse从入门到精通》第二版(第二篇6-18章源码)

    3. **对话框与表单**:涉及各种对话框的使用,如消息对话框、文件选择对话框,以及如何创建自定义表单。 4. **树形视图与表格视图**:教授如何使用SWT的Tree和Table控件,展示层次数据和列表数据,以及如何实现动态...

    Eclipse_Swt_Jface_核心应用_部分19

    第8章 SWT中的事件模型 126 8.1 事件模型概述 126 8.1.1 监听器(Listener) 126 8.1.2 事件(Event) 127 8.1.3 注册监听器 127 8.1.4 适配器 128 8.1.5 常见的事件 128 8.2 事件处理的常用写法 130 ...

Global site tag (gtag.js) - Google Analytics