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