有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

打印Java中是否有一个打印功能不阻塞UI?

在我的Java应用程序中,有一个打印功能

PrinterJob pj = PrinterJob.getPrinterJob();
pj.setJobName(myJobName);
pj.setPrintable(myPrintableObject);
if ( pj.printDialog() == false ) {
  return;
}  
pj.print();

虽然打印作业尚未完成,但我无法在UI中单击其他内容,因为打印作业被阻塞

这同样适用于JTextPane的打印功能:

JTextPane jtp = new JTextPane();
       ...         
jtp.print(null, null, show, null, null, show); 

有没有可能在不阻塞UI的情况下用Java打印,或者我必须通过多个线程来实现这一点


共 (1) 个答案

  1. # 1 楼答案

    您的问题是,您正在从主事件调度器线程调用这些方法。该线程的存在是为了服务于你的用户界面——它不应该用于任何长期活动。因为当你占据这个线程时,它就不能再处理事件了,你的用户界面就会冻结

    你应该把它们包装成自己的线程。或者使用类似SwingWorker的东西