作者:梁祺 (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()方法获得用户选择的所有文件。
| 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.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值。
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资源里介绍。
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。
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应用程序提供统一编程接口。
相关推荐
第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 ...
10第8章 SWT/JFace的事件处理.pdf 11 第二篇 核心技术.pdf 12 第9章 Eclipse插件体系结构.pdf 13 第10章 开发第一个插件项目.pdf 14 第11章 操作(Actions).pdf 15 第12章 视图(views).pdf 16 第13章 ...
第8章 SWT/Jface的事件处理 第二篇 核心技术 第9章 Eclipse插件体系结构 第10章 开发 第一个插件项目 第11章 操作(Actions) 第12章 视图(Views) 第13章 编辑器(Editors) 第14章 透视图(Perspectives) 第15章 对话框...
第一章 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的平台结构,并根据读者定位,省略了大部分关于IDE使用的基础内容,然后具体介绍SWT/JFace的使用,包括基本的控件、观察器、对话框以及图形等,在接下来的插件开发核心和高级部分,本书详细...
本书首先介绍了Eclipse的平台结构,并根据读者定位,省略了大部分关于IDE使用的基础内容,然后具体介绍SWT/JFace的使用,包括基本的控件、观察器、对话框以及图形等,在接下来的插件开发核心和高级部分,本书详细...
第8章 Eclipse体系结构概述 199 8.1 历史和现状...... 200 8.2 体系结构的最高优先级: 可扩展性与集成...... 201 8.3 Eclipse作为IDE平台和作为 胖客户端应用程序...... 203 8.4 Eclipse Platform Runtime.. 204 ...
第8章 Eclipse体系结构概述 199 8.1 历史和现状...... 200 8.2 体系结构的最高优先级: 可扩展性与集成...... 201 8.3 Eclipse作为IDE平台和作为 胖客户端应用程序...... 203 8.4 Eclipse Platform ...
第8章 Eclipse体系结构概述 199 8.1 历史和现状...... 200 8.2 体系结构的最高优先级: 可扩展性与集成...... 201 8.3 Eclipse作为IDE平台和作为 胖客户端应用程序...... 203 8.4 Eclipse Platform ...
2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统...
2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性...
Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来...
2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性...
2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统...
2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统...
Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机...
Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机...
2 创建第一个RCP程序 ........................................................................................................................ 11 2.1 创建一个RCP程序 .......................................