有关多个模态框的弹出与销毁——丑九怪
在编写代码的时候,我们很多情况下要用到模态框去阻止操作,或者说是等待某些代码执行完毕,那么势必就存在模态框的产生以及销毁问题,下面来看一些有关模态框的操作
- 模态框的产生与关闭:用一个线程单独生成一个模态框,这样就不会影响我们之后的操作,相当于和其他线程并行,互不影响,当关闭的时候,首先检查模态框是否已经显示完成,如果显示完成,则进行关闭,如果未显示完成,用isShowing判断,直到显示完成,在进行关闭。原因是,如果我们直接关闭,可能会存在一种情况:关闭的条件提前达成,进行关闭,但是这个时候,模态框并没有显示出来(模态框显示的代码很多,存在不可忽略的运行时间)如果此时进行关闭操作,本模态框将永远无法关闭,这是不允许的。
- 用一个线程去产生一个模态对话框还有另一个原因:如果存在同时弹出多个模态对话框的情况(例如每次点击可能触发多次显示模态框的事件响应)如果不用单独的线程处理,后面产生的模态框对象(指针)将覆盖前面的模态框对象,那么前面的模态框就永远关不掉了,这也是不允许的!
- 为了处理多个模态框的同时显示和关闭,我建立了DialogFactory,其中DialogMap<String, MyDialog>,String是dialog的名字(自己命名的),MyDialog是每个模态对话框的对象,这里就相当于每产生一个模态对话框(一个对话框的显示线程),我们用键值对把他存起来,等到关闭的条件达成之后,根据键值取出对话框的对象,判断是否显示成功,然后关闭,这就形成了一个完整的体系。
- 以下是干货,上代码:
这段代码是MyDialog(继承自JDialog)的核心代码,在show时,用线程启动
public MyDialog initMxlDialog(String message) {
int width = (int) (message.length() * 1.5 * normalFontSize);
int height = 80;
setSize(width, hei

本文探讨在编程中如何处理多个模态框的创建和销毁问题,强调使用独立线程避免相互影响。通过DialogFactory类管理DialogMap,存储每个模态框的名称和对象,确保正确关闭。核心代码展示了MyDialog和DialogFactory的实现,以及主界面的响应逻辑。
最低0.47元/天 解锁文章
2173

被折叠的 条评论
为什么被折叠?



