Это действительно хороший вопрос, ИМХО ... тот, который я задал пару лет назад на Java-форумах Sun (теперь, по сути, несуществующий, спасибо Oracle, полуразумной группе фебрильных фискальных фашистов).
На фронте наведения порядка в Каосе, который является вашим типичным «первым вариантом» GUI, Google для Swing MVC. Первая статья, которую я прочитал на эту тему, была JavaWorld "MVC встречает Swing" . Мне повезло, потому что он объясняет ПРОБЛЕМЫ, а также предлагает здравые решения (с примерами). Прочитайте его, и Google для себя "расширенное чтение" и задайте нам любые конкретные вопросы, вытекающие из этого.
В области "симулированной пользовательской активности" вам не о чем беспокоиться ... вам нужно только наблюдать за внешними условиями, скажем, вы обнаруживаете, что локальный файл обновлен (например) и, в свою очередь, " выдать "уведомление зарегистрированному слушателю (ям) ... единственное отличие состоит в том, что в этом случае вы реализуете и" говорящего ", и" слушателя ". Интерфейс Swings Listener может быть повторно использован для обмена сообщениями (или нет, по вашему усмотрению). Здесь нет ничего хитрого.
«Поднять» «событие» совершенно прямо. По сути, вы просто вызываете метод «EventHappened» для каждого из слушателей, которые в данный момент зарегистрированы. Единственный сложный момент - иметь дело с «многопоточностью», присущей всем нетривиальным приложениям Swing ... в противном случае они будут работать как трёхногие собаки, потому что EDT (google it) постоянно отключается, делая все вместо просто рисование и посредничество в сообщениях (то есть для чего оно было разработано). (Как сказал ранее Игнис) Класс SwingUtilies предоставляет несколько удобных invoke
методов для «вызова событий» в EDT.
В приложениях Swing нет ничего особенного ... У Swing довольно крутая кривая обучения, вот и все, особенно многопоточность ... тема, которую я раньше избегал, как чума, как "слишком сложная для скромного мозга, подобного мой". Излишне говорить, что это был беспочвенный страх. Даже такой старый идиот, как я, может это понять ... это займет больше времени, вот и все.
Приветствия. Кит.