Диалоговые окна FileDialog ...

Класс Dialog бибилиотеки SWT является базовым классом следующих диалоговых окон :

  • FileDialog - окно выбора и сохранения файла;
  • DirectoryDialog - окно выбора и создания директории;
  • PrintDialog - окно выбора принтера, установки различных параметров печати и отправки задания на печать.
  • FontDialog - окно выбора шрифта системы;
  • ColorDialog - окно выбора цвета;
  • MessageBox - окно вывода сообщений/предупреждений;

Диалоговое окно FileDialog

Конструкторы FileDialog

FileDialog(Shell parent)
FileDialog(Shell parent, int style)

Конструктор создания диалогового окна работы с файлами FileDialog в качестве параметра принимает родительское окно parent. Второму конструктору дополнительно необходимо передать стиль style, который может принимать одно из значений [SWT.SAVE, SWT.OPEN, SWT.MULTI] и определяет интерфейс и поведение диалогового окна FileDialog.

Основные методы FileDialog

МетодОписание
String getFileName() Функция получения выбранного файла относительно пути фильтра. Если файл не выбран, то функция вернет пустую строку
String[] getFileNames() Функция получения массива файлов относительно пути фильтра. Если файлы не выбраны, то функция вернет пустой массив
String[] getFilterExtensions() Функция получения расширений файлов, которые FileDialog будет использовать для фильтрации
int getFilterIndex() Функция получения индекса массива описаний фильтра, который был выбран пользователем. Отсчет от 0. Функция вернет -1, если фильтр не был использован
String getFilterPath() Функция получения пути фильтра директории, который использовал FileDialog. Если фильтр не был использован, то функция вернет пустую строку
String open() Функция открытия диалогового окна FileDialog и размещение его над всеми остальными окнами
void setFileName(String string) Определение наименования файла (может быть null), который FileDialog выделит при открытии окна
void setFilterExtensions(String[] extensions) Определение расширений файлов (может быть null), которые FileDialog будет использовать для фильтрации файлов
void setFilterIndex(int index) Определение расширения файлов согласно индексу массива фильтров, который FileDialog будет использовать при инициализации окна
void setFilterNames(String[] names) Определение наименований фильтров согласно списку расширений, которые использует FileDialog
void setFilterPath(String string) Определение пути директории (может быть null), которые FileDialog будет использовать для представления файловой системы

Пример использования FileDialog с фильтрацией

В следующем коде формируется диалоговое окно выбора файла с использованием фильтра. Для подключения фильтра вызываются методы setFilterNames и setFilterExtensions. Описание расширений файлов для фильтра представлено в переменноЙ FILTERS.

// Описание файловых фильтров
private static final String[][] FILTERS = {{"Файлы Word (*.docx)" , "*.docx"}, 
                                           {"Файлы Excel (*.xlsx)", "*.xlsx"},
                                           {"Файлы Adobe (*.pdf)" , "*.pdf" },
                                           {"Все файлы (*.*)"     , "*.*"  }};
. . . 

/**
 *
 *
 */
private void setFilters(FileDialog dialog)
{
    String[] names = new String[FILTERS.length];
    String[] exts  = new String[FILTERS.length];
    for (int i = 0; i < FILTERS.length; i++) {
        names[i] = FILTERS[i][0];
        exts [i] = FILTERS[i][1];
    }
    // Определение фильтра диалога FileDialog
    dialog.setFilterNames(names);
    dialog.setFilterExtensions(exts);
}

. . . 
// Диалоговое окно чтения файла
FileDialog dlg = new FileDialog(shell, SWT.OPEN);
setFilters(dlg);
String fname = dlg.open();
if (fname != null)
    System.out.println ("" + fname);

Интерфейс диалогового окна выбора файла представлен на следующем скриншоте. Выпадающий список с фильтрами размещается в правом нижнем углу над кнопками управления.

В следующем примере для сохранения нового файла конструктору FileDialog передается опция SWT.SAVE.

// Диалоговое окно сохранения файла
FileDialog dlg = new FileDialog(shell, SWT.SAVE);
setFilters(dlg);
String fname = dlg.open();
if (fname != null)
    System.out.println ("" + fname);

Интерфейс диалогового окна сохранения файла представлен на следующем скриншоте. Выпадающий список с фильтрами размещается в нижней части под компонентом определения наименования файла.

При использования опции SWT.MULTI для работы с несколькими файлами одновременно необходимо при выделении очередного файла дополнительно удерживать в нажатом состоянии CTRL.

Диалоговое окно DirectoryDialog

Конструкторы DirectoryDialog

DirectoryDialog(Shell parent)
DirectoryDialog(Shell parent, int style)

Конструктор создания диалогового окна работы с директориями DirectoryDialog в качестве параметра принимает родительское окно parent. Второму конструктору дополнительно необходимо передать стиль style, который может принимать одно из значений [SWT.SAVE, SWT.OPEN].

Основные методы DirectoryDialog

МетодОписание
String getFilterPath() Функция получения выделенной в диалоговом окне DirectoryDialog директории
String open() Функция открытия диалогового окна DirectoryDialog и размещение его над всеми остальными окнами
void setFilterPath(String string) Функция определения директории, используемой DirectoryDialog для выделения

Пример использования DirectoryDialog

В следующем примере формируется диалоговое окно выбора директории.

DirectoryDialog dlg = new DirectoryDialog(shell, SWT.OPEN);
dlg.setFilterPath("d:\\office");
String fdir = dlg.open();
if (fdir != null)
    System.out.println ("" + fdir);

Интерфейс диалогового окна определения директории DirectoryDialog представлен на следующем скриншоте.

Диалоговое окно DirectoryDialog позволяет выполнять переименование директории и содержит кнопку «Создать папку», позволяющую создать новую директорию даже если была использована опция SWT.OPEN.

Диалоговое окно PrintDialog

Экземпляр класса PrintDialog позволяет пользователю выбрать принтер, установить определенные параметры и отправить задание на печать.

Конструкторы PrintDialog

PrintDialog(Shell parent)
PrintDialog(Shell parent, int style)

Основные методы PrintDialog

МетодОписание
int getEndPage() Функция получения последней выбранной пользователем страницы перед отправлением задания на печать
PrinterData open() Функция открытия диалогового окна PrintDialog и размещение его над всеми остальными окнами
PrinterData getPrinterData() Получение данных печати при открытии диалогового окна PrintDialog
boolean getPrintToFile() Функция получения 'Print to file' настройки, выбранные пользователем
int getScope() Функция определения цели печати
int getStartPage() Функция получения начальной страницы печати
void setEndPage(int endPage) Метод определения последней страницы печати
void setPrinterData(PrinterData data) Метод определения параметров печати перед открытием окна PrintDialog
void setPrintToFile(boolean printToFile) Метод определения настройки 'Print to file'
void setScope(int scope) Метод определения цели печати
void setStartPage(int startPage) Метод определения первой страницы печати, которую пользователь увидит в PrintDialog.

Класс PrinterData наследует DeviceData, описывает задание на печать в терминах printer'a и имеет следующие поля :

  • static int ALL_PAGES
  • boolean collate
  • int copyCount
  • String driver
  • int duplex
  • static int DUPLEX_LONG_EDGE
  • static int DUPLEX_NONE
  • static int DUPLEX_SHORT_EDGE
  • int endPage
  • String fileName
  • static int LANDSCAPE
  • String name
  • int orientation
  • static int PAGE_RANGE
  • static int PORTRAIT
  • boolean printToFile
  • int scope
  • static int SELECTION
  • int startPage

Пример открытия диалогового окна PrintDialog

В следующем примере формируется диалоговое окно печати.

PrintDialog dlg = new PrintDialog(shell);
PrinterData pdata = dlg.open();
if (pdata != null)
    System.out.println (pdata.toString());

Интерфейс диалогового окна печати PrintDialog представлен на следующем скриншоте.

Диалоговое окно FontDialog

Экземпляр класса FontDialog позволяет пользователю выбрать шрифт из всех возможных шрифтов, установленных в системе.

Конструкторы FontDialog

FontDialog(Shell parent)
FontDialog(Shell parent, int style)

Конструктор создания диалогового окна выбора шрифта FontDialog в качестве параметра принимает родительское окно parent.

Основные методы FontDialog

МетодОписание
FontData[] getFontList() Функция получения списка описания шрифтов
RGB getRGB() Функция получения цвета шрифта
FontData open() Функция открытия FontDialog и размещение его над остальными окнами
void setFontList(FontData[] fontData) Метод определения выделенных шрифтов в диалоговом окне FontDialog
void setRGB(RGB rgb) Метод определения цвета шрифта по умолчанию.

Экземпляр класса FontData описывает шрифт операционной системы, включающего следующие поля :

  • height - высота шрифта в пискелях;
  • name - наименование шрифта;
  • style - стиль шрифта (сочетание [NORMAL, ITALIC] и BOLD).

Конструкторы FontData

FontData()
FontData(String string)
FontData(String name, int height, int style)

Основные методы FontData

МетодОписание
int getHeight() Функция чтения размера шрифта в пискелях
String getLocale() Функция чтения Locale
String getName() Функция чтения наименования шрифта
int getStyle() Функция чтения стиля шрифта
void setHeight(int height) Функция определения размера шрифта в пискелях
void setLocale(String locale) Функция определения Locale
void setName(String name) Функция определения наименования шрифта
void setStyle(int style) Функция определения стиля шрифта

Пример открытия диалог FontDialog

В следующем примере формируется диалоговое окно FontDialog для определения шрифта.

FontDialog dlg = new FontDialog(shell);
FontData font = dlg.open();
if (font != null)
    System.out.println (font.toString());

Интерфейс диалогового окна определения шрифта FontDialog представлен на следующем скриншоте.

Окно сообщений MessageBox

MessageBox позволяет вывести информацию в диалоговом окне сообщений. Класс MessageBox нельзя наследовать.

Конструкторы MessageBox

MessageBox(Shell parent)
MessageBox(Shell parent, int style)

Стили MessageBox

Стиль style позволяет определить внешний вид окна сообщений с представлением определенного изображения и кнопок управления :

  • изображение в окне - ICON_ERROR, ICON_INFORMATION, ICON_QUESTION, ICON_WARNING, ICON_WORKING
  • кнопки - OK, OK | CANCEL
  • кнопки - YES | NO, YES | NO | CANCEL
  • кнопки - RETRY | CANCEL
  • кнопки - ABORT | RETRY | IGNORE

Основные методы MessageBox

МетодОписание
String getMessage() Функция получения текста сообщения (строка может быть пустой);
int open() Открыть окно сообщений MessageBox поверх остальных окон;
void setMessage(String string) Метод определения текста сообщения.

Пример открытия окна сообщения MessageBox

int style = SWT.APPLICATION_MODAL | SWT.OK | SWT.CANCEL;
MessageBox messageBox = new MessageBox (shell, style);
messageBox.setText ("Подтверждение выхода");
messageBox.setMessage ("Закрыть окно?");
int rc = return messageBox.open();
System.out.println ("return code : " + rc);

Интерфейс примера окна сообщений MessageBox представлен на следующем скриншоте.

Исключения диалоговых окон

Диалоговые окна могут вызвать следующие исключения :

  • IllegalArgumentException : ERROR_NULL_ARGUMENT если parent не определен (null);
  • SWTException
    • ERROR_THREAD_INVALID_ACCESS
    • ERROR_INVALID_SUBCLASS
  Рейтинг@Mail.ru