0

私が構築している 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) {

    }
}
4

2 に答える 2