0

エージェント (オブジェクト) のコレクションがあります。シミュレーターが開始されると、各エージェントは環境 (2D 配列) 内の位置を更新する act() メソッドを実行します。私の paintComponent(Graphics g) は別のクラスでオーバーライドされます (これは基本的に 2D 配列を反復処理し、エージェントのタイプに対応する長方形の色を描画します)。

しかし、実際のコレクションは、ユーザーが GUI からボタンをクリックすることによって独立して実行されるシミュレーター クラスにあります。paintComponent(Graphics g) の最後に repaint() メソッドを配置するとします。JPanel キャンバスを 2 回だけ更新します。1 回目はアプリケーションの起動時、2 回目はシミュレーションを開始する実行ボタンをクリックしたときです。

すべてのエージェントが act メソッドを実行したときに、新しいイメージで JPanel キャンバスを自動的に更新するにはどうすればよいですか。あるいは、コレクションでエージェントに変更が発生した場合、キャンバスに新しい場所を描画し、古い場所を削除しますか?

4

0 に答える 0