Java Observer и Observable не работают должным образом между приложениями - PullRequest
6 голосов
/ 16 января 2012

У меня есть приложение с основным JFrame, которое содержит модель списка по умолчанию.Я хочу, чтобы, если я что-то изменил в этих записях, второе запущенное приложение автоматически обновлялось.

Пока у меня есть класс MainController, который реализует слушатель и переписывает метод обновления:

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

и простой класс, расширяющий Observable

public class Comanda extends Observable{}

Моя проблемав том случае, если я удаляю одну запись из первого приложения, второй список не обновляется.Программа удаляет запись из текстового файла, но не обновляет модель списка по умолчанию.Та же проблема с правкой или добавлением.

Я пытался добавить "reloadList ()" в метод обновления, но это не работает.Идеи?

Ответы [ 2 ]

25 голосов
/ 16 января 2012

Вы звонили addObserver на Comanda и добавили MainController как Observer?Кроме того, когда происходит изменение, вы звоните setChanged и notifyObservers?

Глядя на код, который вы разместили, я вижу, что вы не подключили объекты Observer и Observable вместе.Как я уже сказал, вы должны вызывать addObserver для вашего Observable объекта, затем внутри вашего Observable объекта, всякий раз, когда вносятся изменения, вы должны вызывать setChanged затем notifyObservers.Только при вызове notifyObservers будет вызываться метод update любых добавленных Observer s.

Вы сказали в своем вопросе, что при удалении одной записи список не обновляется,что заставляет меня думать, что Comanda, вероятно, не тот Object, который вы хотите Observe.Какой бы объект не содержал List записей, он должен быть Observable.

Посмотрите на this для получения дополнительной информации о паттерне Observer / Observable.

2 голосов
/ 16 января 2012

То, что вы пытаетесь сделать, называется «межпроцессное взаимодействие» - отправка данных из одного приложения в другое.Есть разные способы сделать это;поиск Google даст вам больше информации.Observable работает только в одном приложении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...