![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Pablos |
|
||||||||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 20.4.2010 Репутация: нет Всего: нет |
Здравствуйте.
Вопрос скорее связан по применению ООП в Java при разработке динамически соддаваемых окон, компонентов и обработке событий от них. Создаваемая, сейчас, мною конструкция категорически не нравится. Но ничего более дельного в бошку не лезет. Прошу указать на очевидные КОНЦЕПТУАЛЬНЫЕ ОШИБКИ в построении ООП приложения. Т.е. я не прошу написать за меня код, а указать на места логических ошибок в схеме приложения. --------------------------------------------------------------------------------- Задача: нужно состряпать динамически создаваемую форму (не одну) с кнопками, гридами (данные из/в БД), лэйблами и т.п. И есс-но обрабатывать события нажатия тех же кнопок. Например: нажатие кнопки "Обновить" вызывает запрос в БД. Для этого я создаю несколько классов: 1. класс BD - для работы с БД; 2. класс UTM - модель (для MVC); 3. класс GUI - здесь стряпаю элементы. Пример:
Здесь же в GUI создан класс ButtonListener
Ничего более дельного, чем:
} } 4. класс Forms - там вызывается конструктор BD c SQL запросом, конструктор GUI, вызывается addTable и туда передается BD и ResultSet полученный в результате запроса. Пример:
------------------------------------------------------------------------------------------- Что-то вроде того. Специально не постил много кода, если потребуется уточнить какие-либо места, с радостью это сделаю. Всем заранее спасибо за помощь и дельные советы.) |
||||||||
|
|||||||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
Не совсем понял я, какие именно места кода тебя самого не устраивают, но я бы выделил создание компонентов в отдельный класс GuiBuilder.
Что касается обращения к таблице, то в какой именно точке кода у ней нужно обращаться? Из лисенера кнопки? Почему нельзя просто добавить метод для доступа к таблице (GUI.getTable())? ButtonListener при этом может хранить ссылку на окно.
Ну а если класс ButtonListener можно сделать внутренним - тогда и передавать ничего никуда не придется, его экземпляр и так сможет доступаться до полей объекта GUI. Это сообщение отредактировал(а) batigoal - 21.4.2010, 16:35 -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| Pablos |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 20.4.2010 Репутация: нет Всего: нет |
butigoal, спасибо за ответ.
>> Что касается обращения к таблице, то в какой именно точке кода у ней нужно обращаться? Из лисенера кнопки? >> Почему нельзя просто добавить метод для доступа к таблице (GUI.getTable())? >> ButtonListener при этом может хранить ссылку на окно. Спасибо за ценную мыслю. Была идея создавать по одному экземпляру GUI на форму. Но Table на одной форме может быть > 1. Тогда не совсем понятно, какую я должен взять по .getTable(). Хочется, чтобы на этапе создания элемента он уже был "привязан" к объекту, который должен изменить. Я решил сейчас сделать вспомогательные классы, пример:
Т.е. на этапе создания кнопки делать так:
И дальше в лисенере я смогу проверять какой именно объект хранится использовав .getRef(). Как такая идея? >> Не совсем понял я, какие именно места кода тебя самого не устраивают, Я нутром чувствую, что с распределением ответственности какая-то лажа происходит. Хочу узнать как мэтры делают. Может есть толковая литература именно по применению Java'вского ООП в графических интерфейсах? |
||||
|
|||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
Давай сделаем так: ты озвучишь исходную задачу, а дальше подумаем, какими средствами её можно реализовать. Потому что пока картинка видна урывками.
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |