我的观察者模式对我的JDialog工作正常,当我的观察者改变时调用update(),正如我所期望的那样。我也在跟踪我的观察者中的观察者数量(在JDialog打开的情况下是1)。
我现在要尝试设置JDialog的模态,以便在对话框打开时使主窗口无法使用。但是,如果我使用
dialog.setModalityType(ModalityType.APPLICATION_MODAL);
我无法再在我的可观察对象中看到我的JDialog,并且不会调用update()。它看起来好像没有正确设置观察者。
任何人都可以对此有所了解吗?我该怎么做才能解决这个问题?
答案 0 :(得分:4)
这个问题通常是由于没有考虑程序流程的顺序引起的。
确保完全设置观察者,包括添加所有侦听器并启动任何和所有进程 设置对话框可见。如果您在显示对话框后执行 之后的任何操作,则会在对话框返回之前将其阻止。
有关更具体的帮助,请考虑创建和发布minimal example program。