Java Swing Print () использование - PullRequest
4 голосов
/ 10 февраля 2011

Должен ли java Swing Print () вызываться в EDT (нить диспетчеризации событий)?

Требуется длительное время для выполнения, и длительные действия, связанные с EDT, являются болью, как мы все знаем.

Ответы [ 2 ]

3 голосов
/ 10 февраля 2011

Короткий ответ, нет, печать не требуется проводить на EDT.

Это описано в официальном руководстве: Как печатать текст

Печать в интерактивном или неинтерактивном режиме

В интерактивном режиме отображается диалоговое окно прогресса с параметром прерывания на время печати.Вот пример диалогового окна хода выполнения.

Это диалоговое окно позволяет пользователю отслеживать ход печати. Диалог выполнения является модальным, когда метод печати вызывается в потоке отправки событий, и немодальным в противном случае. Важно, чтобы ваш документ оставался неизменным во время печати, в противном случае поведение при печати не определено.Метод печати гарантирует, что ваш документ не будет изменен, и отключает компонент на время печати. ​​

Если вы вызываете метод печати в потоке отправки событий в неинтерактивном режиме, то все события, включая перерисовки, будутбыть заблокирован. Именно поэтому неинтерактивная печать на EDT рекомендуется только для приложений с невидимым графическим интерфейсом.

1 голос
/ 07 марта 2013

Имейте в виду, что JTextComponent является единственным компонентом Swing, который может быть напечатан в фоновом потоке с помощью его специальных методов печати. Метод печати, унаследованный от JComponent, не потокобезопасен.

В целом: Swing является однопоточным, если не указано иное. Специальный метод печати JTextComponent явно заявляет, что он безопасен для потоков:

http://docs.oracle.com/javase/7/docs/api/javax/swing/text/JTextComponent.html#print(java.text.MessageFormat,%20java.text.MessageFormat,%20boolean,%20javax.print.PrintService,%20javax.print.attribute.PrintRequestAttributeSet,%20boolean)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...