JavaFX TabPane - изменить одну вкладку, обновить другие

У меня есть TabPane с 10 вкладками (каждая со своим контроллером). В одном из них у меня есть таблица «категории», где пользователь может добавлять/редактировать/удалять категории. Другие вкладки имеют те же «категории» таблицы, меньшего размера, в режиме только для чтения, где пользователь может выбирать только категории. Затем, когда таблица «категории» изменяется на вкладке категорий, я хочу, чтобы для всех других таблиц обновлялись категории других вкладок. Я думал (еще не реализовано) на верхней панели разместить прослушиватель, который обнаруживает изменения вкладок и, когда пользователь покидает вкладку категорий, проверяет, были ли внесены изменения. Если это так, вызовите все задействованные контроллеры для обновления их собственных таблиц категорий.

У меня есть вопрос, есть ли менее громоздкий способ сделать это. Что-то вроде отправки сообщения «таблица была изменена», и все вкладки «слушателей» сообщения обновляют свои таблицы. Похоже на локально JMS, а не клиент-сервер. Есть ли что-то вроде этой службы обмена сообщениями, которую можно использовать в том же приложении, или решение, которое я привел выше, является наиболее последовательным? Я думаю, что вопрос больше в Java, чем в JavaFX. Большое спасибо.


person roneypc    schedule 12.12.2013    source источник


Ответы (1)


Самый простой способ - сохранить категории в ObservableList на каком-то верхнем уровне (скажем, в вашем подклассе Application) и сделать так, чтобы все таблицы имели общую ссылку на этот список (table.setItems(yourList)). Всякий раз, когда на вкладке категорий вносятся изменения, другие вкладки автоматически отражают это изменение.

person assylias    schedule 12.12.2013
comment
Спасибо за ваш ответ. Вы знаете, я думал об «общем решении», чтобы применить его где угодно. Ну а пока попробую ваше решение. Спасибо! - person roneypc; 13.12.2013