| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: GUI и Java FX приложения > Строим "правильный" GUI |
| Автор: diablero 29.1.2008, 23:54 | ||||||||
| Передо мной поставлена задача, написать редактор, чтобы не объяснять его суть, назову его графическим редактором. Бизнес логика уже готова. Осталось написать графический интерфейс. И тут я задумался над его архитектурой. Суть вот в чем, что в зависимости от настроек пользователю должны обрезаться некоторые функции. Т.е. в итоге я имею панель инструментов, и основную рабочую панель. Панелью инструментов будет являться группа JToolBar’орв и рабочая JPanel. Какой я пока вижу вариант формирования панелей инструментов. В файле конфигурации редактора перечисляется кнопки, в зависимости от этого перечня строиться панели.
Т.е. в итоге я получаю, что каждая кнопка это отдельный класс, со своим листенером. Кнопки легко добавлять, удалять. Вроде? Осталось все листенеры связать с JPanel, рабочей области программы. Я пока думаю как это сделать. Кто как подобное решает? Что можете подсказать? |
| Автор: gibbzy 30.1.2008, 05:33 |
| Читайте тему ActionEvent я пытался написать что то подобное, код там конечно дико индусский но вроде работает я тож сталкнулся с тем же вопросом что и вы. Мне ответили. Мне так думаеться что всё проще реализовать при помощи JToolBar и JMenuBar так будет лучче и логичней. Почитайте описание реализации экшенов, там всё достаточно просто под каждую кнопку пишеться отдельный класс который включает в себя метод public void actionPerformed(ActionEvent arg0) {} в кротором пишеться что соббсно должна делать эта кнопка. |
| Автор: diablero 30.1.2008, 08:58 | ||
| Код должен получиться не индуский, это дело принципа. gibbzy вы не поняли то, что я написал. Вот так будет выглядеть одна из многих кнопок:
|
| Автор: w1nd 30.1.2008, 11:36 |
| Есть такой замечательный интерфейс - Action. Просто используйте его реализацию (возможно, дополнив) и не изобретайте велосипедов |
| Автор: w1nd 30.1.2008, 21:10 |
| http://java.sun.com/products/jfc/tsc/articles/actions/index.html, http://java.sun.com/docs/books/tutorial/uiswing/misc/action.html, http://java.sun.com/mailers/techtips/corejava/2006/tt1219.html |
| Автор: diablero 30.1.2008, 21:38 | ||||
Разобрался, Action - это красиво и всегда клево
У меня такой вопрос пока не решенный. Как всем воркерам получать доступ до панели? |
| Автор: bluecat 25.2.2008, 17:17 | ||
А это и есть, как мне кажется, самая большая проблема с Action'ами - их надо интегрировать с другими частями приложения. В частности, с бизнес-логикой (это еще называется visibility problem). Один из подходов, который я встречал, заключается в том, что создается некий класс-менеджер (или фабрика), который отвечает за управдение группой логически связанных Action'ов, например, кнопки в тулбаре. Далее этот класс отвечает за инизиализацию Action'ов и их интеграцию с остальным приложением. Например, можно инициализировать класс-менеджер ссылками на бизнес-логику (или на другие элементы интерфейса), а Action'ы реализовать как внутренние классы класса-менеджера, и тогда они будут автомамически иметь доступ к бизнес-логике. Action'ы наиболее удобны, когда их нужно обрабатывать локально. Чем дальше нужно передать событие, сгенерированное Action'ом, тем больше проблем. Потому что в любом случае нужно, во-первых, знать, куда передавать, а во-вторых, знать, как передавать, т.е., обеспечить доступ и проинициализировать ссылки. |
| Автор: COVD 25.2.2008, 18:13 |
| В нетбинс 6 есть тип проекта DesktopApplication . При создании нового проекта генерируется заготовка, в которой применен подход с использованием Action. Уже нет там больше конструкций типа addActionListener .... с анонимными классами. |