首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >非阻塞模式Swing进度对话框

非阻塞模式Swing进度对话框
EN

Stack Overflow用户
提问于 2010-10-08 06:16:49
回答 1查看 5.2K关注 0票数 16

一个愚蠢的问题,但我真的不能让它工作:我在一个Swing应用程序中有一些长时间运行的进程,可能需要几分钟的时间。当这个过程正在进行时,我想向用户显示一个进度对话框。我还希望防止用户执行进一步的操作,例如,在进程进行时按下按钮。

如果我在EDT上进行处理,这显然会阻止最终用户在处理过程中执行任何操作。但是因为EDT正在忙于处理,所以它从来没有时间呈现对话框的内容,所以我只能得到对话框的轮廓。

但是,如果我在工作线程中执行该进程,最终用户可以单击按钮,并使EDT操作工作线程同时也在操作的状态,从而导致错误的结果。如果我将对话框设为模态,就不会发生这种情况,但是Swing中的模态也意味着阻塞,所以当我调用setVisible(true)的时候,线程就会永远阻塞。

因此,我目前的“解决方案”是使用一个工作线程,然后产生一个单独的线程,该线程的唯一目的是吸收setVisible的阻塞特性。当然,一定有更好的解决方案!

那么,我如何获得一个对话框来阻止用户与系统的其余部分(模式)进行交互,但又不阻止导致它可见的线程呢?

EN

回答 1

Stack Overflow用户

发布于 2010-10-08 16:35:15

你一定是做错了什么。请在How to Use Progress Bars上试用该教程。如果您能理解这些代码是如何工作的,那么它应该为您提供实现所需功能的方向。

请注意,进度条通常是模式的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3886264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档