美好的一天,我想在java swing中打开新线程中的标签,并且它有机会运行耗时的任务来切换选项卡。尝试过,选项卡的副本实现了Runnable接口,但新线程无效(在调试器中它开始挂起大约1秒,并被杀死),因为我理解构造函数的工作,以及所有的内容摇摆在其主要流动中。我读过SwingWorker,但不太明白如何将它应用到我的问题中。如果可以,请举例说明。提前谢谢。
P.S。这是网络应用程序,“加载”将作为服务器的工作。换句话说,就是让用户能够在标签之间切换,直到当前标签是连接。
答案 0 :(得分:1)
您应该尝试将执行实际工作的代码与指定GUI的代码分开。你应该搜索,例如对于模型 - 视图 - 控制器 - 模式(MVC)。
这样,GUI代码可以在Swing / AWT的事件调度程序线程(EDT)内部运行,它或多或少是有意的。执行实际工作的代码应尽可能独立于GUI。现在,您可以选择在专用线程中运行它,或者最适合您的整体应用程序架构。
最后一部分将这两者(GUI和域逻辑)连接在一起,以便GUI触发工作器代码或工作器代码触发GUI更新,或满足工作流程要求的任何内容。