常用系统对话框
在SWT的开发过程中,用户还会经常使用到打印对话框、颜色对话框、字体对话框、文件对话框和目录对话框等对话框,本节将介绍这些对话框的使用。另外,每种类型的对话框都可以在本书源代码中找到实例。
15.8.1 打印对话框(PrintDialog)
“打印”对话框中用户能选择打印机和设置打印的一些选项,如图15-8所示。
新建打印对话框通过PrintDialog,例如“PrintDialog printDialog = new PrintDialog(s, SWT.NONE);”,另外,要打印相关的数据可以通过Printer对象(如有兴趣可参考本书源代码)。
图15-8 “打印”对话框
15.8.2 颜色对话框(ColorDialog)
当用户要改变颜色的设置,就要用到颜色对话框,如图15-9所示。
图15-9 颜色对话框
用户可以通过如下代码片段新建颜色对话框,并设置标签的颜色。
//新建颜色对话框
ColorDialog dlg = new ColorDialog(shell);
//设置默认的颜色
dlg.setRGB(colorLabel.getBackground().getRGB());
//设置标题字体
dlg.setText("Choose a Color");
//打开对话框
RGB rgb = dlg.open();
if (rgb != null) {
color.dispose();
color = new Color(shell.getDisplay(), rgb);
//设置标签的颜色
colorLabel.setBackground(color);
}
15.8.3 字体对话框(FontDialog)
用户可以通过“字体”对话框选择字体及字体的颜色,如图15-10所示。
图15-10 “字体”对话框
新建字体对话框比较简单,如下代码片段演示如何设置字体对话框的初始字体和颜色,以及选择了相应的字体和颜色后设置标签的字体和颜色。
// 新建字体对话框
FontDialog dlg = new FontDialog(shell);
//设置初始字体和颜色
if (font != null) dlg.setFontList(fontLabel.getFont().getFontData());
if (color != null) dlg.setRGB(color.getRGB());
//打开对话框
if (dlg.open() != null) {
if (font != null) font.dispose();
if (color != null) color.dispose();
//新建字体对象
font = new Font(shell.getDisplay(), dlg.getFontList());
//设置标签的字体
fontLabel.setFont(font);
//新建颜色对象
color = new Color(shell.getDisplay(), dlg.getRGB());
//设置标签颜色
fontLabel.setForeground(color);
15.8.4 文件对话框(FileDialog)
“文件”对话框是比较常用的对话框,当用户要从磁盘选择文件时将用文件对话框选取文件,如图15-11所示。
新建文件对话框,用户可以设置对话框的初始路径、标题和扩展名过滤等属性,如下代码片段所示。
//新建文件对话框,并设置为打开的方式
FileDialog fd = new FileDialog(s, SWT.OPEN);
//设置文件对话框的标题
fd.setText("Open");
//设置初始路径
fd.setFilterPath("C:/");
//设置扩展名过滤
String[] filterExt = { "*.txt", "*.doc", ".rtf", "*.*" };
fd.setFilterExtensions(filterExt);
//打开文件对话框,返回选择的文件
String selected = fd.open();
System.out.println(selected);
图15-11 “文件”对话框
15.8.5 目录对话框(DirectoryDialog)
“目录”对话框和文件对话框类似,用户可以通过目录对话框选择相应的目录,如图15-12所示。
新建目录对话框,用户可以设置对话框的初始路径、标题和提示信息等属性,最后返回选择的目录,如下代码片段所示。
//新建目录对话框
DirectoryDialog dlg = new DirectoryDialog(shell);
//设置初始路径
dlg.setFilterPath(text.getText());
//设置对话框标题
dlg.setText("SWT's DirectoryDialog");
//设置提示信息
dlg.setMessage("Select a directory");
//打开对话框,返回目录
String dir = dlg.open();
if (dir != null) {
// Set the text box to the new selection
text.setText(dir);
}
图15-12 “目录”对话框
这些常用的系统对话框都是操作系统提供的,和当操作系统中使用的对话框是一样的。