我正在构建一个基于 MVC 的 Java 应用程序,并且我的控制器中有一个特定的方法(如下所示),其行为如下:
- 正如我所希望的那样,模型是通过初始化方法更新的。
- 视图的更新没有发生,因为该
model.start()
方法永远不会终止(因为它是一个无限的 while 循环)。
我想先更新我的视图,然后才能更新start()
我的模型。如何更改我的代码以获得所需的行为?
我想一种解决方法是用model.start()
触发我的模型能够观察到的事件的代码替换该行,但我还没有尝试过,因为我想了解我的问题的根源。
另外,我不知道这是否相关,但是我的主应用程序类通过 为我的摆动组件定义了一个单独的线程SwingUtilities.invokeLater(new Runnable()...
,并且我的视图由摆动组件组成。可能存在与多个线程执行相关的一些问题,如果是这样,那就可以解释为什么我的initializedPerformed()
方法没有以同步方式执行。
控制器中的方法不像我期望/想要的那样:
public void initializePerformed(Event e) {
model.initialize(e);
view.getPanel().setName(model.getName());
model.start();
}
模型.开始():
public void start() {
while (true) {
}
}