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

第八天:那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应用程序提供统一编程接口。

分享到:
评论

相关推荐

    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 ...

    eclipse插件开发,第一部分,前16章节----下载不扣分,回帖加1分,欢迎下载,童叟无欺

    10第8章 SWT/JFace的事件处理.pdf 11 第二篇 核心技术.pdf 12 第9章 Eclipse插件体系结构.pdf 13 第10章 开发第一个插件项目.pdf 14 第11章 操作(Actions).pdf 15 第12章 视图(views).pdf 16 第13章 ...

    Eclipse插件开发笔记—PDF—带目录

    第8章 SWT/Jface的事件处理 第二篇 核心技术 第9章 Eclipse插件体系结构 第10章 开发 第一个插件项目 第11章 操作(Actions) 第12章 视图(Views) 第13章 编辑器(Editors) 第14章 透视图(Perspectives) 第15章 对话框...

    eclipse插件开发-铺设一条插件开发普及之路(1-5章).pdf

    第一章 Eclipse插件概述 5 一、Eclipse概述 5 二、Eclipse插件(plug-in)概述 6 三、Eclipse插件开发环境与开发入门 8 1.3.1 创建工程及设置环境 8 1.3.2 Activator类 13 1.3.3 plugin.xml与org.eclipse.ui....

    Eclipse插件开发学习笔记 第一篇 开发基础 (第一章到第八章)

    本书首先介绍了Eclipse的平台结构,并根据读者定位,省略了大部分关于IDE使用的基础内容,然后具体介绍SWT/JFace的使用,包括基本的控件、观察器、对话框以及图形等,在接下来的插件开发核心和高级部分,本书详细...

    Eclipse插件开发学习笔记 第二篇 核心技术 (第十四章到第十八章)

    本书首先介绍了Eclipse的平台结构,并根据读者定位,省略了大部分关于IDE使用的基础内容,然后具体介绍SWT/JFace的使用,包括基本的控件、观察器、对话框以及图形等,在接下来的插件开发核心和高级部分,本书详细...

    Eclipse权威开发指南2.pdf

    第8章 Eclipse体系结构概述 199 8.1 历史和现状...... 200 8.2 体系结构的最高优先级: 可扩展性与集成...... 201 8.3 Eclipse作为IDE平台和作为 胖客户端应用程序...... 203 8.4 Eclipse Platform Runtime.. 204 ...

    Eclipse权威开发指南3.pdf

    第8章 Eclipse体系结构概述 199 8.1 历史和现状...... 200 8.2 体系结构的最高优先级: 可扩展性与集成...... 201 8.3 Eclipse作为IDE平台和作为 胖客户端应用程序...... 203 8.4 Eclipse Platform ...

    Eclipse权威开发指南1.pdf

    第8章 Eclipse体系结构概述 199 8.1 历史和现状...... 200 8.2 体系结构的最高优先级: 可扩展性与集成...... 201 8.3 Eclipse作为IDE平台和作为 胖客户端应用程序...... 203 8.4 Eclipse Platform ...

    java源码包2

    2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统...

    JAVA上百实例源码以及开源项目

    2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性...

    JAVA上百实例源码以及开源项目源代码

    Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来...

    java源码包---java 源码 大量 实例

    2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性...

    java源码包3

    2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统...

    java源码包4

    2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机...

    Eclipse RCP Plugin 开发自学入门指南(CEC首发)

    2 创建第一个RCP程序 ........................................................................................................................ 11 2.1 创建一个RCP程序 .......................................

Global site tag (gtag.js) - Google Analytics