2016-05-26 2 views
1

В приложении, которое я разрабатываю, несколько пользователей могут модифицировать модель на сервере, модель содержит список объектов, и пользователи получают обновленную модель каждый раз, когда пользователь вносит в нее изменения. Когда клиент запускает программу, он может открыть JFrame, где появляется JComboBox, и в этом ComboBox перечислены все объекты с сервера. Мой вопрос: Как сделать так, чтобы список на этом JFrame обновлялся сам по себе, так что, если, скажем, другой пользователь удаляет объект из списка, объект больше не отображается для других пользователей, которые глядя на список одновременно?Автоматическое обновление списка JComboBox?

+1

Вы знакомы с [Наблюдателем/Наблюдаемым шаблоном?] (Http://www.tutorialspoint.com/design_pattern/observer_pattern.htm) Это может помочь вам перенаправить обновления другим клиентам. –

+1

@ Грег Хильстон .... Я согласен с наблюдательным/наблюдаемым рисунком. Ваш комментарий правильный ... можете ли вы дать более подробную информацию, отвечая на этот вопрос :-) –

+0

@ZinMinn Awesome, спасибо человеку! Все еще пытаюсь выяснить, когда комментарий или ответ более уместны. Ответ отправлен –

ответ

4

Я думаю, что вы просите, это идеальный вариант использования для Observer/Observable Pattern.

В качестве примера воспользуемся предоставленным вами прецедентом. В этом случае ваш сервер будет действовать как «Наблюдатель», поскольку он активно наблюдает за всеми вашими клиентами. Ваши клиенты будут действовать как «Наблюдаемые».

Что происходит, ваш сервер, по сути, регистрируется со всеми клиентами, которые будут уведомлены, если есть изменения. Когда клиент вносит изменения, этот клиент уведомит всех Наблюдателей, которые зарегистрировались у него (нашего сервера), которые затем могут перенаправить изменения клиентам.

Мы можем работать с несколькими примерами кода вместе, но прикрепленная ссылка, как правило, очень хорошо объясняет шаблон проектирования. Я полагал, что адаптация беседы к вашему делу может быть полезна.

+1

Спасибо .... за ваш ответ :-) –

+0

Да, я понимаю, что я должен сообщить пользователям об изменениях, которые были сделаны. Моя проблема в том, что у меня нет идеи о том, как реализовать шаблон для моих классов на стороне клиента. Предположим, что у меня есть библиотека классов, у которой в качестве атрибута есть Список книг (Книга - это еще один класс). Теперь пользователь щелкнет где-то в графическом интерфейсе, и всплывает JFrame, в середине которого находится ComboBox, в котором перечислены все классы из моей библиотеки. Теперь другой пользователь удаляет книгу из списка - как немедленно и автоматически обновлять этот ComboBox, чтобы книга не отображалась в списке? – Teo

+0

Я не уверен, что вы прочитали мой ответ. Я представил подробное описание того, что вам нужно сделать для реализации шаблона Observer/Observable. Вы должны взглянуть на ту ссылку, которую я предоставил, и узнать о шаблоне, не связанном с проблемой, которую вы пытаетесь решить. После того, как вы изучили шаблон, применение его к вашему коду должно быть намного проще. –

Смежные вопросы