![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| diablero |
|
||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 337 Регистрация: 3.12.2006 Где: Аркхэм Репутация: 2 Всего: 5 |
Передо мной поставлена задача, написать редактор, чтобы не объяснять его суть, назову его графическим редактором. Бизнес логика уже готова. Осталось написать графический интерфейс. И тут я задумался над его архитектурой. Суть вот в чем, что в зависимости от настроек пользователю должны обрезаться некоторые функции.
Т.е. в итоге я имею панель инструментов, и основную рабочую панель. Панелью инструментов будет являться группа JToolBar’орв и рабочая JPanel. Какой я пока вижу вариант формирования панелей инструментов. В файле конфигурации редактора перечисляется кнопки, в зависимости от этого перечня строиться панели.
Т.е. в итоге я получаю, что каждая кнопка это отдельный класс, со своим листенером. Кнопки легко добавлять, удалять. Вроде? Осталось все листенеры связать с JPanel, рабочей области программы. Я пока думаю как это сделать. Кто как подобное решает? Что можете подсказать? -------------------- Есть два варианта решения проблемы - реальный и фантастический. Реальный - это когда прилетят инопланетяне и все за нас сделают ... |
||||||||
|
|||||||||
| gibbzy |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 25.1.2008 Репутация: нет Всего: 3 |
Читайте тему ActionEvent
я пытался написать что то подобное, код там конечно дико индусский но вроде работает я тож сталкнулся с тем же вопросом что и вы. Мне ответили. Мне так думаеться что всё проще реализовать при помощи JToolBar и JMenuBar так будет лучче и логичней. Почитайте описание реализации экшенов, там всё достаточно просто под каждую кнопку пишеться отдельный класс который включает в себя метод public void actionPerformed(ActionEvent arg0) {} в кротором пишеться что соббсно должна делать эта кнопка. Это сообщение отредактировал(а) gibbzy - 30.1.2008, 05:34 |
|||
|
||||
| diablero |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 337 Регистрация: 3.12.2006 Где: Аркхэм Репутация: 2 Всего: 5 |
Код должен получиться не индуский, это дело принципа.
gibbzy вы не поняли то, что я написал. Вот так будет выглядеть одна из многих кнопок:
-------------------- Есть два варианта решения проблемы - реальный и фантастический. Реальный - это когда прилетят инопланетяне и все за нас сделают ... |
|||
|
||||
| w1nd |
|
|||
![]() Вертилятор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 22.3.2006 Где: Москва Репутация: 23 Всего: 54 |
Есть такой замечательный интерфейс - Action. Просто используйте его реализацию (возможно, дополнив) и не изобретайте велосипедов
-------------------- ![]() ![]() |
|||
|
||||
| diablero |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 337 Регистрация: 3.12.2006 Где: Аркхэм Репутация: 2 Всего: 5 |
А можно пример, чтобы не изобретать вилосипед -------------------- Есть два варианта решения проблемы - реальный и фантастический. Реальный - это когда прилетят инопланетяне и все за нас сделают ... |
|||
|
||||
| w1nd |
|
|||
![]() Вертилятор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 22.3.2006 Где: Москва Репутация: 23 Всего: 54 |
http://java.sun.com/products/jfc/tsc/artic...ions/index.html, http://java.sun.com/docs/books/tutorial/ui...isc/action.html, http://java.sun.com/mailers/techtips/corej...006/tt1219.html
Это сообщение отредактировал(а) w1nd - 30.1.2008, 21:10 -------------------- ![]() ![]() |
|||
|
||||
| diablero |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 337 Регистрация: 3.12.2006 Где: Аркхэм Репутация: 2 Всего: 5 |
Разобрался, Action - это красиво и всегда клево
У меня такой вопрос пока не решенный. Как всем воркерам получать доступ до панели? -------------------- Есть два варианта решения проблемы - реальный и фантастический. Реальный - это когда прилетят инопланетяне и все за нас сделают ... |
||||
|
|||||
| bluecat |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 25.2.2008 Репутация: нет Всего: нет |
А это и есть, как мне кажется, самая большая проблема с Action'ами - их надо интегрировать с другими частями приложения. В частности, с бизнес-логикой (это еще называется visibility problem). Один из подходов, который я встречал, заключается в том, что создается некий класс-менеджер (или фабрика), который отвечает за управдение группой логически связанных Action'ов, например, кнопки в тулбаре. Далее этот класс отвечает за инизиализацию Action'ов и их интеграцию с остальным приложением. Например, можно инициализировать класс-менеджер ссылками на бизнес-логику (или на другие элементы интерфейса), а Action'ы реализовать как внутренние классы класса-менеджера, и тогда они будут автомамически иметь доступ к бизнес-логике. Action'ы наиболее удобны, когда их нужно обрабатывать локально. Чем дальше нужно передать событие, сгенерированное Action'ом, тем больше проблем. Потому что в любом случае нужно, во-первых, знать, куда передавать, а во-вторых, знать, как передавать, т.е., обеспечить доступ и проинициализировать ссылки. |
|||
|
||||
| COVD |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 4 Всего: 43 |
В нетбинс 6 есть тип проекта DesktopApplication . При создании нового проекта генерируется заготовка, в которой применен подход с использованием Action. Уже нет там больше конструкций типа addActionListener .... с анонимными классами.
|
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |