|
|
|
Организация swing проекта
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, делаю swing приложение и возникло небольшая проблема с организацией проекта. Есть класс Gui наследованный от JFrame, где создаю само окно приложения. 3 класса StartPanel, ResPanel, HelpPanel наследуемые от JPanel которые должны появляться на фрейме. На StartPanel есть 2 кнопки, которые собственно должны стирать с фрейма StartPanel и рисовать Res или HelpPanel. Но вариант в обработчики событий для StartPanel вызывать и стирать все панели. В ResPanel и HelpPanel вызывать StartPanel. Есть ли возможность как-то централизировать все эти вызовы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2013, 21:15 |
|
||
|
Организация swing проекта
|
|||
|---|---|---|---|
|
#18+
http://www.oracle.com/technetwork/articles/javase/wizard-136789.html http://stackoverflow.com/questions/88889/recommend-a-java-wizard-library Тут вообще я сразу варианта эдак 4 вижу. Зависит всё от перспектив проекта. От наиболее правильного, но максимально сложного, до наиболее примитивного, но не особо подходящего для будущих изменений. 1) Сложный способ делать полноценный MVP или MVVM, где отдельными JavaBeans с PropertyChangeSupport будет реализована модель приложения. Обработчики нажатия кнопок (лучше таки использовать Action вместо ActionListener) обновляют Модель, которая через PropertyChangeListener нотифицирует Presenter - а тот в свою очередь обновляет контейнер заменяя одну панель на другую. CardLayout, кстати, тоже рулит. 2) Более простой способ - не использовать модель, но связать все вложеные страницы, через абстрактного родителя. Внешний контейнер получает события из конкретных реализаций и дейстует исходя из этого. Т.е. все вложеные страницы наследуются от AbstractWizardPage, а внешний GUI класс - Wizard, взаимодейтсвует с ними единообразно. 3) Простейший способ - Action реализовать в главном классе а использовать во StartPage. 4) Как сделаете, так сделаете. Какая разница? Со временем поймете что с этим кодом не так и тогда придет и понимание как можно было бы сделать лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2013, 21:42 |
|
||
|
Организация swing проекта
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответ. Самый сложный пока сложен для меня) А вот с абстрактным родителем интересно попробовать. Конечно сейчас я напишу вариант, где все зависит друг от друга, но завтра уже будет непонятно, что это, а что то. Вот решил уделить время для централизации всех команд и структуры. Все равно потом придется придавать человеческий вид) А проект вряд ли имеет какое то дальнейшее развитие. Скорее для портфолио. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2013, 22:11 |
|
||
|
Организация swing проекта
|
|||
|---|---|---|---|
|
#18+
Для портфолио, хорошо бы следовать KISS и SOLID. Код должен быть как можно более простым и лаконичным. Но классы при этом должны быть минимально связаны друг с другом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2013, 22:21 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38511576&tid=2127917]: |
0ms |
get settings: |
11ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
196ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
| others: | 240ms |
| total: | 553ms |

| 0 / 0 |
