Java Swing-等待渲染完成
我有个小问题。我试图在JTextPane中显示非常大的文本(~10MB)。我想显示一个辅助对话框(使用动画gif作为不确定的进度条),直到文本由JTextPane呈现 到目前为止,我带着这个(科特林): 遗憾的是,在文档渲染完成之前,该对话框立即被取消。当EDT完成一个操作或其他什么的时候,我可以使用任何类型的回调吗Java Swing-等待渲染完成,java,swing,kotlin,task,event-dispatch-thread,Java,Swing,Kotlin,Task,Event Dispatch Thread,我有个小问题。我试图在JTextPane中显示非常大的文本(~10MB)。我想显示一个辅助对话框(使用动画gif作为不确定的进度条),直到文本由JTextPane呈现 到目前为止,我带着这个(科特林): 遗憾的是,在文档渲染完成之前,该对话框立即被取消。当EDT完成一个操作或其他什么的时候,我可以使用任何类型的回调吗 您可以在这里查看Swing workers:这将允许您对Swing中的异步任务进行更多控制 单独的问题:为什么不设置工作窗口可见性并在一个线程中加载文档?像这样: val work
您可以在这里查看Swing workers:这将允许您对Swing中的异步任务进行更多控制 单独的问题:为什么不设置工作窗口可见性并在一个线程中加载文档?像这样:
val worker = WorkerWindow(this, "Drawing text...") // JDialog
SwingUtilities.invokeLater {
worker.isVisible = true
textPane.document = logcat.document // Long UI operation
worker.dispose()
}
似乎更容易…我终于明白了
val worker = WorkerWindow(this, "Drawing text...")
Thread {
textPane.document = logcat.document
SwingUtilities.invokeLater {
worker.dispose()
}
}.start()
SwingUtilities.invokeLater {
worker.isVisible = true
}
哦,实际上我刚刚注意到,在后台线程上更新文档会导致JTextPane更新!谢谢:)
val worker = WorkerWindow(this, "Drawing text...")
Thread {
textPane.document = logcat.document
SwingUtilities.invokeLater {
worker.dispose()
}
}.start()
SwingUtilities.invokeLater {
worker.isVisible = true
}