Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2013_1 / ООП / Введение_SWG.pdf
Скачиваний:
144
Добавлен:
23.02.2015
Размер:
3.32 Mб
Скачать

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

Соседние файлы в папке ООП