常用系統對話框
在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 “目錄”對話框
這些常用的系統對話框都是操作系統提供的,和當操作系統中使用的對話框是一樣的。