Spec-Zone .ru
спецификации, руководства, описания, API
Содержание документации
СОДЕРЖАНИЕ | ПРЕДЫДУЩИЙ | NEXT

Регистрация для Событий

API Службы печати Java позволяет службам сообщать о двух типах событий к приложениям: корректировки данных принтера и задание печати прогрессируют обновления. API событий, который включает javax.print.event пакет и методы, чтобы зарегистрировать слушателей на службе и DocPrintJob, следует за знакомой моделью слушателя, используемой в AWT.

События Службы печати

Слушатели события Print Service наблюдают изменения службы в состоянии и событиях отчета как изменения в значениях атрибутов службы печати. Приложение может следить за развитием событий на службе печати, реализовывая javax.print.event.PrintServiceAttributeListener интерфейс и устанавливая себя как слушатель на PrintService как показано в этом примере:

public class PrintPS implements PrintServiceAttributeListener {
        ...
        pservices[0].addPrintServiceAttributeListener(this);
        ...
        public void attributeUpdate(PrintServiceAttributeEvent e){
                // Do something if an attribute is updated
        }
...
PrintServiceAttributeListener.attributeUpdate () метод вызывают, когда служба печати приписывает изменение. Служба использует интерфейс PrintServiceAttributeListener, чтобы решить, какие события это поддерживает.

Приложение может обнаружить, который атрибуты службы печати служба поддерживает при использовании тех же самых методов запроса, которые это использует, чтобы обнаружить, который атрибуты запроса поддерживает служба. Например, чтобы обнаружить, поддерживает ли служба атрибут QueuedJobCount, приложение вызывает:

service.isAttributeCategorySupported(QueuedJobCount.class);
Служба определяет, как часто она сообщает об обновлениях об атрибутах. Если много атрибутов поддерживаются, служба могла бы обработать события в пакетном режиме, что означает, что приложение, как гарантируют, не получит определенное событие. Поставленное событие содержит только атрибуты, которые изменились в значении, что означает, что статическая служба приписывает, такие как модель принтера, никогда не будет сообщаться в событии.

События Задания печати

Большинство клиентов печати больше интересуется контролем задания печати чем контроль состояния службы. Клиент может установить два различных видов слушателей на DocPrintJob: PrintJobAttributeListener и PrintJobListener.

PrintJobAttributeListener

PrintJobAttributeListener подобен слушателю атрибута службы: задание сообщает об изменениях в атрибутах, которые реализуют интерфейс PrintJobAttribute. Обычно эти атрибуты являются также атрибутами запроса печати и фиксируются во время жизни задания печати. Только несколько атрибутов, таких как JobMediaSheetsCompleted, вероятно, изменятся. Так как немного клиентов интересуются этой гранулярностью детали, и даже меньше служб поддерживает эту возможность, клиенты будут наиболее вероятно использовать PrintJobListener, чтобы контролировать продвижение задания.

PrintJobListener

PrintJobListener легче использовать чем PrintJobAttributeListener, потому что это передает простые сообщения, такие как printJobCompleted или printJobFailed. У интерфейса есть только шесть методов, каждый из которых сообщает о существенной, но простой информации как о событии. Как удобство, класс адаптера, PrintJobAdapter, обеспечивает реализации по умолчанию этих шести методов.

Одно сообщение в особенности: printJobNoMoreEvents необычен, но полезен. Клиент часто интересуется знанием, если задание закончилось или перестало работать. Если возможный, служба должна поставить такие "терминальные" события, но иногда служба не может убедиться, вводит ли задание, законченное или отказавшее, и "завершенное" сообщение, в заблуждение в этом случае. Например, задание могло бы быть spooled к сетевой службе печати, у которой есть очередь, это не видимо. В этом случае "больше событий" сообщение не достаточно, чтобы сказать, что задание успешно выполнилось, но клиент может, по крайней мере, вывести, что это, как известно, не перестало работать. Следующий пример демонстрирует, как добавлять слушателя, который контролирует сообщения printJobNoMoreEvents:

public class PrintPS extends PrintJobAdapter{
        ...
        pj.addPrintJobListener(this);
        ...
        public void printJobNoMoreEvents(PrintJobEvent e){
                // Do something here
        }
...


СОДЕРЖАНИЕ | ПРЕДЫДУЩИЙ | NEXT

Oracle и/или его филиалы Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.
Свяжитесь с Нами