«MVC» и управление jMenubar в зависимости от выбранного jTabbedpane из класса «Control» - PullRequest
2 голосов
/ 13 июля 2010

Правильно, поэтому я знаю, что мой код / ​​структура довольно грязная, я не делал MVC раньше, и я уверен, что все равно сделал это неправильно. Я хочу иметь возможность "управлять" jMenubar в зависимости от того, какая вкладка выбрана.

У меня есть основной класс GUI, который просто создает новый «MenuBar» и каждый новый «PanelXXXX», где «PanelXXXX» может быть «PanelDesign», «PanelSource» и т. Д. Эти панели добавляются как новые вкладки в мою jTabbedpane. «PanelXXXX» все расширяют «Panel», которая содержит некоторые дополнительные значения / значения по умолчанию. «Панель» расширяет «jPanel» и реализует «ActionListener». «MenuBar» расширяет «jMenubar». Внутри «MenuBar» - я настраиваю разные «JMenuItem».

Это все отлично работает. Однако в моем классе «Контейнер» (который реализует «ActionListener») я проверяю текущую выбранную вкладку и решаю, будут ли мои кнопки «вперед» / «назад» перемещаться или нет и т. Д. - тоже работает нормально.

Теперь я удивляюсь, как я буду управлять MenuBar, не создавая новый объект, я мог бы перекодировать MenuBar, чтобы реализовать класс Singleton, который мог бы работать?

Хм, я думаю, мне нужен "MenuBar" для реализации "ActionListener"? Подожди, нет, это было бы неправильно ...

1 Ответ

1 голос
/ 13 июля 2010

Прежде всего, не делайте компоненты Swing на подклассы, если вам не нужен новый компонент с расширенными функциональными возможностями.

Теперь, как разобраться с меню:

  1. Создать пустой JMenuBar.

  2. Напишите метод, чтобы очистить строку меню и заполнить ее меню / действиями на основе выбранной вкладки

  3. Добавить прослушиватель изменений на панель вкладок , чтобы он вызывал ранее описанный метод

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...