2010-10-29 2 views
0

Приложение для Java не очень большое, но я хотел бы сделать это «правильным способом». Ищете предложения, чтобы не сделать большой беспорядок ...Структура кода приложения Java

Я использую Swing, Swing Application Framework и базу данных H2.

Это приложение с одним кадром с различными вкладками. Большинство вкладок будут отражать некоторые аспекты данных в базе данных. Некоторые из них смогут его изменить. На некоторых вкладках будут кнопки или действия, которые будут перенаправлены на другую вкладку ... это в основном это.

Я бы хотел, чтобы вещи были чистыми, а также переносимыми и гибкими (можно отключить некоторые вкладки, например, или добавить немного).

Вот вопросы:

1) Как есть вкладки «обновилась» при изменении содержимого базы данных? Внедрить какой-либо интерфейс прослушивателя? Должен ли я определить этот интерфейс или что-то уже существующее, я могу повторно использовать его?

2) Как «ссылка» различные вкладки вместе, так что легко переходить от одного к другому (и, возможно, придется нести некоторый аргумент для установки вкладки назначения в правом «вид»)

3) Если я установил некоторые предпочтения с некоторыми фильтрами в другой части приложения, как мне поделиться такими настройками со всем приложением?

И когда я спрашиваю «как», я действительно имею в виду «что является лучшим способом» ... Я могу заставить это работать уже ... просто искать подходящий инструмент для использования, шаблон дизайна или такой.

ответ

1

Если вы используете качели, вы можете использовать панель с вкладками, чтобы иметь табличный макет.

Внедрение слушателя (как вы планируете). Посмотрите на наблюдаемый интерфейс в Java.

Вы можете реализовать singleton (например, класс PreferenceManager), чтобы сохранить предпочтение и получить доступ к нему через приложение для доступа к свойствам.

+0

Ему нужно помнить, что для изменения элементов графического интерфейса также необходимо использовать тему Dispatch Event. –

2

Существуют различные стратегии создания приложений gui. Here какой-либо статья примерно.

+0

Весь интересный материал ... спасибо! – Matthieu

+1

+1 для ссылки – drzymala

0

Действительно ли вы хотите модель push, где сервер должен поддерживать соединение с каждым клиентом, а затем обновлять их все, когда что-либо изменяется? Это возможно с несколькими клиентами, но быстро становится проблематичным. Вероятно, лучше использовать модель pull, где клиент вручную (периодически?) Запрашивает обновления. Это также хороший способ использовать оптимистичную блокировку с полем last_modified в БД. Попробуйте обновление, если оно изменилось с момента последнего перезагрузки, предупредите пользователя и разрешите им перезаписывать/слить.

Что касается качания, то лучше всего использовать все, что не связано с графическим интерфейсом в основных классах («бизнес-логика»), которые блокируют события. Зарегистрируйте все свои классы Swing в качестве соответствующего прослушивателя событий и соответствующим образом обновите gui (SwingUtilities.invokeLater() - ваш друг здесь).

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