Java';s swing print()用法

Java';s swing print()用法,java,swing,printing,Java,Swing,Printing,是否必须在EDT(事件调度线程)上调用java的swing print() 我们都知道,执行需要较长的时间,在EDT上长时间运行是一件痛苦的事情。简单回答,不,打印不需要在EDT上进行 官方教程中介绍了这一点: 以交互方式或非交互方式打印 在交互模式下,在打印期间显示带有中止选项的进度对话框。下面是一个进度对话框的示例 此对话框允许用户跟踪打印进度在事件分派线程上调用打印方法时,进度对话框为模式对话框,否则为非模式对话框。打印时文档保持不变很重要,否则打印行为未定义。打印方法可确保文档不会更改,

是否必须在EDT(事件调度线程)上调用java的swing print()


我们都知道,执行需要较长的时间,在EDT上长时间运行是一件痛苦的事情。

简单回答,不,打印不需要在EDT上进行

官方教程中介绍了这一点:

以交互方式或非交互方式打印

在交互模式下,在打印期间显示带有中止选项的进度对话框。下面是一个进度对话框的示例

此对话框允许用户跟踪打印进度在事件分派线程上调用打印方法时,进度对话框为模式对话框,否则为非模式对话框。打印时文档保持不变很重要,否则打印行为未定义。打印方法可确保文档不会更改,并在打印期间禁用该组件

如果在非交互模式下调用事件分派线程上的print方法,则所有事件(包括重绘)都将被阻止这就是为什么仅建议使用不可见GUI的应用程序在EDT上进行非交互打印的原因。


但是请注意,JTextComponent是唯一可以使用其专用打印方法在后台线程上打印的Swing组件。从JComponent继承的打印方法是线程安全的

一般来说:Swing是单螺纹的,除非另有说明。JTextComponent的专用打印方法明确声明它是线程安全的: