
- •Обозначения и сокращения
- •Введение
- •1 Простое SWT приложение
- •1.1 Создание приложения
- •1.2 Запуск SWT программы из командной строки
- •1.3 Структура приложения
- •1.4 Слушатели событий
- •1.5 Работа с подпроцессами
- •1.5.1 Диспетчеризация внутренних событий
- •1.5.2 Нить пользовательского интерфейса SWT
- •1.5.3 Выполнение кода за пределами нити UI
- •1.5.4 Рабочая среда и нити
- •2 Элементы управления
- •2.1 Стандартные виджеты
- •2.2 Пользовательские виджеты
- •2.3 Класс Label
- •2.3.1 Стили
- •2.3.2 Текст
- •2.3.3 Изображение
- •2.3.4 Разделители
- •2.3.5 Выравнивание
- •2.3.6 Перенос слов текста
- •2.3.7 Пример использования этикеток
- •2.4 Класс Text
- •2.5 Класс Button
- •2.5.1 Стили
- •2.5.2 Текст
- •2.5.3 Изображение
- •2.5.4 Выравнивание
- •2.5.5 Push Button
- •2.5.6 Toggle Button
- •2.5.7 Check Box
- •2.5.8 Radio Button
- •2.5.9 Selection (выбор)
- •2.5.10 Указание используемой по умолчанию кнопки
- •2.6 Класс List
- •2.6.1 Стили
- •2.6.2. Добавление элементов в список
- •2.6.3. Удаление элементов из списка
- •2.6.4 Получение элементов списка
- •2.6.5 Настройка значений элементов
- •2.6.6 Поиск элементов
- •2.6.7 Выбор элементов списка
- •2.6.8 Обработка событий списка List
- •2.7 Класс Link
- •2.7.1 Стили
- •2.7.2. Текст
- •2.7.3. Обработчики событий
- •2.8 Класс Table
- •2.9 Класс TableColumn
- •2.10 Класс TableItem
- •2.11 Класс Item
- •2.12 Класс Combo
- •2.13 Класс FileDialog
- •2.14 Класс Menu
- •2.15 Класс MenuItem
- •2.16 Класс MessageBox
- •2.17 Класс TabFolder
- •2.18 Class TabItem
- •3 Макеты
- •3.1 Класс FillLayout
- •3.2 Класс GridLayout
- •3.3 Класс GridData
- •3.4 Класс RowLayout
- •3.5 Класс RowData
- •3.6 Класс FormLayout
- •3.7 Класс FormAttachment
- •3.8 Класс FormData
- •4 Графика
- •4.1 Класс GC
- •4.2 Класс Canvas
- •5 Пакет printing
- •5.1 Класс PrintDialog
- •5.2 Класс Printer
- •5.3 Класс PrinterData
- •6 Пакет events
- •6.1 Класс Event
- •7 Разработка приложений
- •8 Разработка новых компонент
- •9 Дополнительные возможности библиотеки SWG
- •9.1 Компоненты управления
- •9.2 Виджеты
- •9.3 Плоские формы
- •9.4 Линии, точки и ломанные
- •9.5 Класс PathShape
- •10 Анимация
- •10.1 Типы анимации
- •10.2 Анимация во времени
- •10. 3 Поддержка времени
- •10.4 Пример приложения с элементами анимации
- •Список использованных источников

5 Пакет printing
5.1 Класс PrintDialog
java.lang.Object
org.eclipse.swt.widgets.Dialog
org.eclipse.swt.printing.PrintDialog
Объекты этого класса (таблица 5.1) позволяют выбирать принтер и различные связанные параметры до начала печати.
Таблица 5.1 – Методы объектов класса PrintDialog
Конструкторы
PrintDialog(Shell parent) – Создает новый объект этого класса для родителя
PrintDialog(Shell parent, int style) – Создает новый объект этого класса для родителя и стиля
|
Методы |
|
protected |
checkSubclass() – Проверяет, класс может быть subclassed |
|
void |
||
|
||
int |
getEndPage() – Возвращает конечную страницу, установленную |
|
|
пользователем при нажатии OK в диалоге |
|
boolean |
getPrintToFile() – Возвращает флаг 'Print to file' установленный |
|
|
пользователем при нажатии OK в диалоге |
|
int |
getScope() – Возвращает область работы принтера, |
|
|
установленную пользователем при нажатии OK в диалоге |
|
int |
getStartPage()– Возвращает начальную страницу, установленную |
|
|
пользователем при нажатии OK в диалоге |
|
PrinterData |
open() – Делает диалог видимым |
|
void |
setEndPage(int endPage) – Устанавливает конечную страницу, |
|
|
которую пользователь увидит при открытии диалога |
|
void |
setPrintToFile(boolean printToFile) – Устанавливает флаг 'Print to |
|
|
file', который пользователь увидит при открытии диалога |
|
void |
setScope(int scope) – Устанавливает область работы принтера: |
|
|
ALL_PAGES, PAGE_RANGE, SELECTION |
|
void |
setStartPage(int startPage) – Устанавливает начальную страницу, |
|
|
которую пользователь увидит при открытии диалога |
|
|
|
122

5.2 Класс Printer
java.lang.Object
org.eclipse.swt.graphics.Device
org.eclipse.swt.printing.Printer
Объекты этого класса (таблица 5.2) используются для печати на принтере. Приложения создают GC принтера, используя new GC(printer), затем используют обычные графические вызовы.
Объект класса Printer может быть создан с обеспечением объекта PrinterData, который идентифицирует принтер. PrintDialog представляет диалог пользователю и возвращает инициализированный экземпляр PrinterData. Кроме того, вызов new Printer() создаст объект принтера для встроенного принтера.
Прикладной код должен явно ввести метод Printer.dispose(), чтобы освободить ресурсы операционной системы, управляемые каждым объектом, когда те больше не требуются.
Таблица 5.2 – Методы объектов класса Printer
Поля
int handle – дескриптор DC принтера (Предупреждение: Эта область является платформо-зависимой и не является частью SWT API)
Конструкторы
Printer() – Создает новый принтер по умолчанию
Printer(PrinterData data) – Создает новый принтер для объекта PrinterData, представляющий желаемый принтер
|
|
Методы |
void |
|
cancelJob() – Отменяет работу печати в процессе работы |
protected |
void |
checkDevice() – Проверяет достоверность устройства |
Rectangle |
|
computeTrim(int x, int y, int width, int height) – Задает |
|
|
желаемую область клиента для получателя (как описано |
|
|
аргументами), возвращает прямоугольник bounding, |
|
|
который требуется задать для области клиента |
protected |
void |
create(DeviceData deviceData) – Создает дескриптор |
|
|
принтера |
protected |
void |
destroy() – Уничтожает дескриптор принтера |
|
|
|
void |
|
endJob() – Заканчивает текущее задание принтера |
123

void |
endPage() – Заканчивает текущую страницу |
Rectangle |
getBounds() – Возвращает прямоугольник, описывающий |
|
размер получателя и области |
Rectangle |
getClientArea() – Возвращает прямоугольник, который |
|
описывает область получателя, которая способна |
|
отображать данные |
static PrinterData |
getDefaultPrinterData() – Возвращает объект PrinterData, |
|
представляющий встроенный принтер или null, если в |
|
системе нет доступного принтера |
Point |
getDPI()– Возвращает точку, чья x координата является |
|
горизонтальным разрешением в точках на дюйм |
|
принтера, и чья y координата является вертикальным |
|
разрешением |
PrinterData |
getPrinterData() – Возвращает объект PrinterData, |
|
представляющий целевой принтер для печати |
static |
getPrinterList() – Возвращает массив объектов PrinterData, |
PrinterData[ ] |
представляющих все доступные принтеры |
void |
internal_dispose_GC(int hDC, GCData data) – Вызывает |
|
специфическую функцию платформы, чтобы удалить |
|
дескриптор GC |
int |
internal_new_GC(GCData data) – Вызывает |
|
специфическую функцию платформы, чтобы создать |
|
новый дескриптор GC |
protected void |
release() – Удаляет любое внутреннее состояние перед |
|
уничтожением принтера |
boolean |
startJob(String jobName) – Начинает задание печати и |
|
возвращает true, если работа началась успешно, и false, в |
|
противном случае |
boolean |
startPage() – Начинает страницу и возвращает true, если |
|
страница началась успешно, и false, в противном случае |
|
|
5.3 Класс PrinterData
java.lang.Object
org.eclipse.swt.graphics.DeviceData
org.eclipse.swt.printing.PrinterData
124

Объекты этого класса (таблица 5.3) являются описаниями заданий печати: области и типа печати, которые необходимы. Например, может быть определено количество страниц и копий, а также возможность печати в файл.
Прикладному коду не нужно явно освобождать ресурсы, управляемые каждым объектом, когда они больше не нужны, и таким образом никакой метод располагать dispose() не предусмотрен.
Пример:
Display display = new Display();
Shell shell = new Shell(display); shell.open ();
Таблица 5.3 – Методы объектов класса PrinterData
|
Поля |
static int |
ALL_PAGES – все страницы будут напечатаны |
|
|
boolean |
collate – должен принтер отсортировать отпечатанную бумагу |
int |
copyCount – количество копий для печати |
String |
driver – драйвер принтера в системах Windows, это — имя драйвер |
|
(часто "winspool") |
int |
endPage – конечная страница страничного диапазона – |
|
используется, когда область — PAGE_RANGE |
String |
fileName – имя файла для печати, если printToFile — true |
String |
name – имя принтера |
static int |
PAGE_RANGE – диапазон страниц печати определяется startPage |
|
и endPage |
boolean |
printToFile – должна ли печать в файл |
int |
scope – область задания печати: ALL_PAGES – печатает все |
|
страницы в текущем документе; PAGE_RANGE – печатать |
|
диапазон страниц определенный startPage и endPage; SELECTION |
|
– печатает текущее выделение |
static int |
SELECTION – указывает на печать только выделенного фрагмента |
int |
startPage – стартовая страница диапазона страниц, когда область — |
|
PAGE_RANGE |
Конструкторы
PrinterData() – Создает объект класса, который может быть использован, чтобы печатать на встроенном принтере
125

PrinterData(String driver, String name) – Создает объект этого класса с данными драйвером и именем принтера
Методы
String toString() – Возвращает строку с кратким, удобочитаемым описанием получателя
PrinterData data = Printer.getDefaultPrinterData(); if (data == null) {
System.out.println("Warning: No default printer."); return;
}
Printer printer = new Printer(data);
if (printer.startJob("SWT Printing Snippet")) {
Color black = printer.getSystemColor(SWT.COLOR_BLACK);
Color white = printer.getSystemColor(SWT.COLOR_WHITE);
Color red = printer.getSystemColor(SWT.COLOR_RED); Rectangle trim = printer.computeTrim(0, 0, 0, 0);
Point dpi = printer.getDPI();
int leftMargin = dpi.x + trim.x; // one inch from left side of paper
int topMargin = dpi.y / 2 + trim.y; // one-half inch from top edge of paper
GC gc = new GC(printer);
Font font = gc.getFont(); // example just uses printer's default font
if (printer.startPage()) { gc.setBackground(white); gc.setForeground(black);
String testString = "Hello World!";
Point extent = gc.stringExtent(testString); gc.drawString(testString, leftMargin, topMargin +
font.getFontData()[0].getHeight());
gc.setForeground(red); gc.drawRectangle(leftMargin, topMargin, extent.x,
extent.y);
printer.endPage();
}
gc.dispose();
printer.endJob();
}
printer.dispose();
126