私が構築している MVC ベースの Java アプリケーションがあり、次のように動作する特定のメソッド (以下を参照) がコントローラー内にあります。
- 私が意図したように、モデルは初期化メソッドを介して更新されます。
model.start()
メソッドが終了しないため (無限 while ループであるため) 、ビューの更新は行われません。
start()
ビューを最初に更新してから、モデルを更新できるようにしたいと考えています。コードを変更して目的の動作を得るにはどうすればよいですか?
回避策の 1 つは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) {
}
}