8

デフォルトのリスト モデルを含むメインの JFrame を持つアプリケーションがあります。これらのレコードで何かを変更すると、2 番目に実行されているアプリケーションが自動的に更新されます。

これまでのところ、リスナーを実装し、更新メソッドを上書きする MainController クラスがあります。

public class MainController implements ActionListener, Observer {
  public void update(Observable o, Object o1) {}
}

Observable を拡張する単純なクラス

public class Comanda extends Observable{}

私の問題は、最初のアプリケーションから 1 つのレコードを削除すると、2 番目のリストが更新されないことです。プログラムはテキスト ファイルからレコードを削除していますが、既定のリスト モデルを更新していません。編集または追加と同じ問題。

update メソッドに「reloadList()」を追加してみましたが、うまくいきません。アイデア?

4

2 に答える 2

27

電話addObserverしてComandaを として追加しMainControllerましたObserverか? また、変更が発生したときに電話をかけsetChangedていnotifyObserversますか?

あなたが投稿したコードを見ると、ObserverObservableオブジェクトが一緒に配線されていないことがわかります。私が言ったように、あなたはaddObserverあなたのObservableオブジェクトを呼び出す必要があり、次にオブジェクト内でObservable、変更が行われるたびにsetChangedthenを呼び出す必要がありますnotifyObserversnotifyObserversが呼び出されたときにのみ、追加された のupdateメソッドが呼び出されます。Observer

あなたは質問で、1 つのレコードを削除するとリストが更新されないと言いComandaましObjectObserve。のレコードを保持しているオブジェクトが、ListであるべきオブジェクトObservableです。

Observer/Observable パターンの詳細については、こちらをご覧ください。

于 2012-01-16T00:21:55.320 に答える
2

あなたがしようとしていることは「プロセス間通信」と呼ばれ、あるアプリケーションから別のアプリケーションにデータを送信します。それにはさまざまな方法があります。Google で検索すると、より多くの情報が得られます。Observable単一のアプリケーション内でのみ機能します。

于 2012-01-16T00:19:15.930 に答える