Шаблон дизайну для управління вікнами в додатку Java Swing


9

Я тільки почав створювати свій перший перший маленький додаток Java Swing. Коли програма відкриється, вона відкриває єдине просте вікно з міткою та парою кнопок. Якщо натиснути одну з цих кнопок, слід видалити вітальний екран і замінити його абсолютно іншою панеллю.

Я не впевнений, який найкращий спосіб створити цю функціональність. Одним із методів було б передати мій JFrameаргумент як… майже про кожен інший компонент, але це мені здається хитким. Або, що робить кожну панель подвійною як слухач дій, але це теж не здається правильним.

Чи є модель дизайну, яку я повинен застосовувати тут? "Заміна вмісту головного і єдиного вікна" повинна бути досить поширеною операцією. Назви для візерунка вистачило б; Я можу самостійно користуватися Google. (Я б більше не сказав "більше" поясненням.)


Це питання про фактичні методи програмування, ви, швидше за все, отримаєте набагато більше відповідей на переповнення стека.
Алекс Фейнман

Відповіді:


6

Створюючи додатки Swing, я зазвичай базую його на Шаблоні посередника. У цій схемі клас «Медіатор» (як правило, основний JFrame) обробляє різні частини графічного інтерфейсу (зазвичай JPanels, JMenus ...) та піклується про спілкування між ними.

Наприклад, якщо подія сталася в JPanel1, JPanel1 повідомляє про це посередника (JFrame). Потім JFrame вживає дій, змінюючи JPanel2.

FYI: всі мої проекти були додатками графічного інтерфейсу від малого до середини, тому я не впевнений, що ці шаблони добре масштабуються. Але якщо ви могли спроектувати адекватну архітектуру, модель Медіатора може стати міцною основою.


4

Ви можете мати основний метод відображення JDialog. Коли діалогове вікно закриється, основний JFrame створюється та відображається.

JDialog дає вам прості у використанні статичні методи, які відображають діалогове вікно із спеціальним вмістом та кнопками та повертають код натиснутої кнопки. Випробувавши це значення, ваш основний метод може вирішити або відобразити основний кадр, або вийти (або що-небудь ще). Прочитайте, будь ласка, Javadoc.

На відміну від деяких старих фреймворків інтерфейсу, додаток Swing не прив’язаний до конкретного кадру чи вікна. Ви можете створити скільки завгодно вікон. Додаток закінчується, коли закінчуються всі потоки, а не коли всі вікна були розміщені. Зазвичай це досягається за допомогою System.exit (0).

Я не знаю, чи існує конкретна модель дизайну для цього випадку. Я рекомендую підручник Java Swing.


1
-1. Це питання дизайнерської схеми. Рекомендована зміна характеристик, які мені дали, і закінчення на "Я не знаю, чи є конкретний шаблон дизайну", не відповідає на це.
Попс

2
Його відповідь дуже точна. У вас немає проблеми з дизайнерською схемою, вам потрібно дізнатися, як спочатку працюють форми та діалоги.
Алекс

2

У багатьох структурах інтерфейсу є різні правила щодо вікна "головне" або "активне". Один із способів управління цією складністю полягає в тому, щоб ваше головне вікно, яке керує циклом основного повідомлення, було невидимим (або маленьким, без хрому, 1 пікселем, поза екраном для особливо дратівливих кадрів). тоді всі інші вікна та діалоги мають бути дочірньою частиною цього вікна.

Цей метод має багато переваг, особливо при роботі з глобальними клавішами клавіш та подіями миші, а також при веденні журналів верхнього рівня та обробці винятків.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.