Spec-Zone .ru
спецификации, руководства, описания, API
|
JTextComponent
class оказывает поддержку для того, чтобы напечатать текстовые документы. JTextComponent
API включает методы, которые позволяют Вам реализовывать и основные и усовершенствованные задачи печати. Поддерживаемые форматы включают HTML, RTF, и простой текст. Для общих задач печати, таких как простая печать текстового документа, используйте print
метод непосредственно. print
у метода есть несколько форм с различными наборами параметра. Этот метод готовит Ваш текстовый документ, получает соответствие Printable
объект, и отправляет это принтеру.
Если реализация по умолчанию Printable
объект не удовлетворяет Ваши потребности, можно настроить расположение печати, переопределяя getPrintable
метод, чтобы обернуть значение по умолчанию Printable
или даже замените это в целом.
Самый легкий способ напечатать Ваш текстовый компонент состоит в том, чтобы вызвать print
метод без параметров. См. пример кода ниже.
try { boolean complete = textComponent.print(); if (complete) { /* show a success message */ ... } else { /*show a message indicating that printing was cancelled */ ... } } catch (PrinterException pe) { /* Printing failed, report to the user */ ... }
Когда Вы вызываете print
метод без параметров, диалоговое окно печати выводится на экран, и затем Ваш текстовый компонент печатается в интерактивном режиме без заголовка или нижнего колонтитула. Пример кода ниже показывает print
сигнатура метода с полным набором параметров.
boolean complete = textComponent.print(MessageFormat headerFormat, MessageFormat footerFormat, boolean showPrintDialog, PrintService service PrintRequestAttributeSet attributes, boolean interactive);
Когда Вы вызываете print
метод со всеми параметрами, Вы явно выбираете функции печати, такие как заголовок и текст нижнего колонтитула, печатая атрибуты, целевую службу печати, и также показать ли диалоговое окно печати или нет, и напечатать ли в интерактивном режиме или нев интерактивном режиме. Чтобы решить, какие параметры удовлетворяют Вашим потребностям лучше всего, см. описание доступных функций ниже.
JTextComponent
печать API обеспечивает следующие функции:
В интерактивном режиме диалоговое окно продвижения с опцией аварийного прекращения работы показывают для продолжительности печати. Вот выборка диалогового окна продвижения.
Это диалоговое окно позволяет пользователю отслеживать печать продвижения. Диалоговое окно продвижения модально когда print
к методу обращаются, событие диспетчеризирует поток и немодальный иначе. Важно, чтобы Ваш документ остался неизменным, будучи напечатанным, иначе поведение печати неопределено. print
метод гарантирует, что Ваш документ не будет изменен и отключает компонент для продолжительности печати.
Если Вы вызываете print
метод на событии диспетчеризирует поток в неинтерактивном режиме, тогда все события включая перекрашивания будут блокированы. Именно поэтому печать нев интерактивном режиме на EDT только рекомендуется для приложений с невидимым GUI.
Можно вывести на экран стандартное диалоговое окно печати, которое позволяет пользователю делать следующее:
Можно заметить, что диалоговое окно печати не определяет общее количество страниц в распечатке. Это - то, потому что текст, печатающий реализацию, использует Printable
API и общее количество страниц не известны прежде, чем напечатать время.
Заголовками и нижними колонтитулами обеспечивают MessageFormat
параметры. Эти параметры позволяют заголовку и нижнему колонтитулу быть локализованным. Считайте документацию для MessageFormat
{0}
.
MessageFormat footer = new MessageFormat("Page - {0}");
Так как общее количество страниц в выводе не известно прежде, чем напечатать время, нет никакого способа определить формат нумерации как "Страница 1 5".
Давайте смотреть на вызванный пример TextAreaPrintingDemo
. Основная функция этого демонстрационного примера печатает текстовый документ или на событии, диспетчеризируют поток или на фоновом потоке в зависимости от выбора пользователя. Этот демонстрационный пример выводит на экран текстовую область, позволяет выбирать несколько функций печати, и печатает контент текстовой области согласно выбранным опциям. Весь код для этой программы может быть найден в TextAreaPrintingDemo.java
. Богатый GUI этого демонстрационного примера создается в TextAreaPrintingDemo
приложение.
Всякий раз, когда запущенное сетью приложение пытается напечатать, Сеть Java Запускаются, открывает диалоговое окно безопасности то, чтобы просить, чтобы пользователь для разрешения напечатал, если это разрешение уже не предоставили в параметрах настройки системы. Продолжиться с печатью пользователя должно принять запрос.
Слушатель действия регистрируется для кнопки Print. Поскольку пользователь нажимает кнопку Print actionPerformed
вызовы метода print
метод, который инициирует задачу печати. Задачей печати является a SwingWorker
объект. Пример кода ниже шоу, как PrintingTask
class реализуется.
private class PrintingTask extends SwingWorker<Object, Object> { private final MessageFormat headerFormat; private final MessageFormat footerFormat; private final boolean interactive; private volatile boolean complete = false; private volatile String message; public PrintingTask(MessageFormat header, MessageFormat footer, boolean interactive) { this.headerFormat = header; this.footerFormat = footer; this.interactive = interactive; } @Override protected Object doInBackground() { try { complete = text.print(headerFormat, footerFormat, true, null, null, interactive); message = "Printing " + (complete ? "complete" : "canceled"); } catch (PrinterException ex) { message = "Sorry, a printer error occurred"; } catch (SecurityException ex) { message = "Sorry, cannot access the printer due to security reasons"; } return null; } @Override protected void done() { message(!complete, message); } }
Пример кода ниже шоу, как print
метод получает набор выбранных опций от компонентов GUI, затем создает экземпляр PrintingTask
class, и выполняет печать.
private void print(java.awt.event.ActionEvent evt) { MessageFormat header = createFormat(headerField); MessageFormat footer = createFormat(footerField); boolean interactive = interactiveCheck.isSelected(); boolean background = backgroundCheck.isSelected(); PrintingTask task = new PrintingTask(header, footer, interactive); if (background) { task.execute(); } else { task.run() } }
Код полужирным иллюстрирует как PrintingTask
's методы вызываются в зависимости от background
значение параметра. Всякий раз, когда пользователь предпочитает печатать на фоновом потоке, execute
метод вызывают, который планирует задачу печати для выполнения на фоновом потоке. Иначе run
метод выполняет задачу печати на EDT.
Начиная с печати больших документов отнимающая много времени задача, рекомендуется выполнить печать на фоновом потоке.
TextBatchPrintingDemo
пример иллюстрирует печатающие невидимые текстовые документы HTML о фоновых потоках. Когда запущено, этот демонстрационный пример выводит на экран страницу со списком URL. Можно посетить страницу HTML, добавить выведенную на экран страницу к списку печати, и как только Вы выбираете все страницы, в которых Вы нуждаетесь, можно напечатать их внезапно на фоновых потоках. Весь код для этой программы может быть найден в TextBatchPrintingDemo.java
. Вот изображение TextBatchPrintingDemo
приложение.
Можно найти код печати в printSelectedPages
метод. Когда вызвано, этот метод сначала получает количество страниц, выбранных для того, чтобы напечатать. Пример кода ниже шоу, как printSelectedPages
метод создает a Runnable
объект для каждой страницы и затем печатает текущую страницу на отдельном потоке.
for (int i = 0; i < n; i++) { final PageItem item = (PageItem) pages.getElementAt(i); // This method is called from EDT. Printing is a time-consuming // task, so it should be done outside EDT, in a separate thread. Runnable printTask = new Runnable() { public void run() { try { item.print( // Two "false" args mean "no print dialog" and // "non-interactive" (ie, batch-mode printing). null, null, false, printService, null, false); } catch (PrinterException pe) { JOptionPane.showMessageDialog(null, "Error printing " + item.getPage() + "\n" + pe, "Print Error", JOptionPane.WARNING_MESSAGE); } } }; new Thread(printTask).start();
Этот раздел перечисляет методы, определенные в JTextComponent
class, которые позволяют Вам печатать текстовые документы.
Метод | Цель |
---|---|
|
Когда вызвано без параметров, выводит на экран диалоговое окно печати, и затем печатает этот текстовый компонент в интерактивном режиме без заголовка или текста нижнего колонтитула. Возвраты true если пользователь продолжал печатать и false если пользователь отменял печать.Когда вызвано с двумя MessageFormat параметры, выводит на экран диалоговое окно печати, и затем печатает этот текстовый компонент в интерактивном режиме с указанным заголовком и текстом нижнего колонтитула.Когда вызвано с полным комплектом параметров, печатает этот текстовый компонент согласно указанным параметрам. Два MessageFormat параметры определяют текст нижнего колонтитула и заголовок. Первый булев параметр определяет, показать ли диалоговое окно печати или нет. Другой булев параметр определяет, напечатать ли в интерактивном режиме или нет. С двумя другими параметрами можно определить атрибуты печати и службу печати.Всякий раз, когда a PrintService параметр опускается, принтер значения по умолчанию будет использоваться. |
|
Возвраты a Printable объект для того, чтобы напечатать Ваш текстовый компонент. Переопределите этот метод, чтобы получить специализированный Печатаемый объект. Можно обернуть один Печатаемый объект в другого, чтобы получить сложные отчеты и документы. |
Эта таблица приводит примеры, которые используют текстовую печать и точки туда, где те примеры описываются.
Пример | Где Описано | Примечания |
---|---|---|
TextAreaPrintingDemo |
Эта страница | Демонстрирует основы текстовой печати и обеспечивает богатый GUI. Позволяет пользователю определять заголовок или текст нижнего колонтитула, включать или выключать диалоговое окно печати, выбирать печать в интерактивном режиме или нев интерактивном режиме, и затем печатать согласно выбранным опциям. |
TextBatchPrintingDemo |
Эта страница | Этот демонстрационный пример выводит на экран текстовый компонент со списком URL, позволяет пользователю просматривать страницы HTML, добавьте их к списку печати, и напечатайте все выбранные страницы сразу на фоновых потоках. |