Spec-Zone .ru
спецификации, руководства, описания, API
|
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);Служба определяет, как часто она сообщает об обновлениях об атрибутах. Если много атрибутов поддерживаются, служба могла бы обработать события в пакетном режиме, что означает, что приложение, как гарантируют, не получит определенное событие. Поставленное событие содержит только атрибуты, которые изменились в значении, что означает, что статическая служба приписывает, такие как модель принтера, никогда не будет сообщаться в событии.
Одно сообщение в особенности: printJobNoMoreEvents необычен, но полезен. Клиент часто интересуется знанием, если задание закончилось или перестало работать. Если возможный, служба должна поставить такие "терминальные" события, но иногда служба не может убедиться, вводит ли задание, законченное или отказавшее, и "завершенное" сообщение, в заблуждение в этом случае. Например, задание могло бы быть spooled к сетевой службе печати, у которой есть очередь, это не видимо. В этом случае "больше событий" сообщение не достаточно, чтобы сказать, что задание успешно выполнилось, но клиент может, по крайней мере, вывести, что это, как известно, не перестало работать. Следующий пример демонстрирует, как добавлять слушателя, который контролирует сообщения printJobNoMoreEvents:
public class PrintPS extends PrintJobAdapter{ ... pj.addPrintJobListener(this); ... public void printJobNoMoreEvents(PrintJobEvent e){ // Do something here } ...