Діалогове вікно jdialog

public Container getContentPane ()

Вікно, як і всякий контейнер, успадковує метод setLayout (LayoutManager). але заміна менеджера розміщення може призвести до руйнування структури вікна. Тому метод setLayout () перевизначений так, що він перевіряє значення прапора - захищеного логічного поля rootPaneCheckingEnabled - і тільки якщо значення цього поля false. змінює менеджер розміщення. За замовчуванням значення цього поля true. змінити його можна

методом setRootPaneCheckingEnabled (boolean). Даний метод захищений (protected), він

призначений для використання при розширенні класу JWindow.

Таке ж правило діє при спробі додати компонент успадкованими методами add (). addImpl () безпосередньо в вікно JWindow. минаючи знаходиться в ньому об'єкт

Проте завжди можна замінити всю кореневу панель методом setRootPane (JRootPane)

або її панелі методами setContentPane (Container). setLayeredPane (JLayeredPane) і setGlassPane (Component).

Успадкований від класу Window метод dispose () знищує вікно, звільняючи все зайняті їм ресурси.

Клас JDialog розширює клас Dialog бібліотеки AWT (див. Розділ 10) і є "важким" компонентом. Він створює модальні (modal) або немодальні діалогові вікна. З модального вікна не можна видалити фокус введення, що не виконавши всі знаходяться в ньому дії.

Кожне діалогове вікно обов'язково пов'язано з батьківським вікном класу Window. Dialog або Frame. Навіть конструктор за замовчуванням JDialog () створює приховане батьківське вікно.

Конструктори JDialog (Frame). JDialog (Frame, String). JDialog (Dialog). JDialog (Dialog, String) JDialog (Window). JDialog (Window, String) створюють немодальні діалогові вікна з заго-

спритного або без заголовка.

Конструктори JDialog (Frame, boolean). JDialog (Frame, String, boolean). JDialog (Dialog, boolean). JDialog (Dialog, String, boolean) створюють модальні діалогові вікна типу мо-

дальності DEFAULT_MODALITY_TYPE. якщо останній параметр дорівнює true. з заголовком або без заголовка.

Конструктори JDialog (Window, Dialog.ModalityType). JDialog (Window, String,

Dialog.ModalityType) створюють діалогові вікна із заданою модальністю.

Модальність вікна і його заголовок можна змінити успадкованими методами

setModalityType (Dialog.ModalityType) і setTitle (String).

Діалогове вікно, як і вікно JWindow. безпосередньо містить тільки один компонент - кореневу панель JRootPane - і точно так же дає безпосередній доступ до

панелям кореневої панелі методами getContentPane (). getLayeredPane (). getGlassPane () і до

самої кореневої панелі методом getRootPane ().

Всі компоненти слід поміщати на панелі, розташовані в кореневій панелі. Щодо приміщення компонентів безпосередньо в діалогове вікно застосовується та ж політика, що і для вікна JWindow.

Так само як і для вікна JWindow. для діалогового вікна JDialog можна підготувати інші екземпляри панелей і встановити їх методами setRootPane (JRootPane),

setContentPane (Container). setLayeredPane (JLayeredPane) і setGlassPane (Component).

Діалогове вікно забезпечено рамкою і рядком заголовка, в яку поміщається рядок, записана в конструкторі. У рядку заголовка є кнопка Закрити. реакцію на яку, а заодно і реакцію на натискання комбінації клавіш +, можна встановити методом

Реакція задається однією з трьох констант:

 DO_NOTHING_ON_CLOSE - відсутність будь-якої реакції;

 HIDE_ON_CLOSE - вікно стає невидимим (за замовчуванням);

 DISPOSE_ON_CLOSE - вікно ліквідується, звільняючи оперативну пам'ять.

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

setDefaultCloseOperation (JDialog.DO_NOTHUNG_ON_CLOSE); addWindowListener (new WindowAdapter ()

public void windowClosing (WindowEvent e)

За замовчуванням діалогове вікно може змінювати свої розміри, але це правило можна поміняти успадкованим методом setResizable (boolean).

За замовчуванням діалогове вікно з'являється в рамці, з рядком заголовка, оформленими за правилами графічної оболонки операційної системи. Дане оформлення можна прибрати методом setUndecorated (true). але разом з цим буде втрачена і стандартна реакція на дії миші з елементами оформлення. Після застосування цього методу можна встановити оформлення поточного Look and Feel методом

setWindowDecorationStyle (int) класу JRootPane. Детально про Look and Feel написано в

Дуже часто діалогові вікна створюються для виведення повідомлень, попереджень, для підтвердження або скасування якихось дій. У бібліотеці Swing в класі JOptionPane зібрана багата колекція готових діалогових вікон. Мова про них піде трохи пізніше.

Вікно верхнього рівня JFrame

Клас JFrame розширює клас Frame графічної бібліотеки AWT. Це повноцінне самостійне вікно верхнього рівня, забезпечене рамкою і рядком заголовка з кнопками системного меню Згорнути. Розгорнути і Закрити. як прийнято в графічній оболонці операційної системи.

Конструктори класу JFrame (). JFrame (String) створюють невидиме вікно з заголовком або без заголовка. Щоб вивести його на екран, треба скористатися методом

Вікно JFrame безпосередньо містить тільки один компонент - кореневу панель класу JRootPane. До нього відноситься все, що сказано в попередніх розділах, за винятком модальності і батьківського вікна.

Реакція на клацання кнопкою миші по кнопці закриття вікна теж визначається методом setDefaultCloseOperation (int). але параметр може прийняти ще одне, четверте значення: EXIT_ON_CLOSE - завершити роботу додатка методом System.exit (0). Це значення не слід застосовувати в апплетах.

Нагадаємо ще, що вікно JFrame успадковує від класу Frame можливість замінити ярличок кнопки системного меню - запалену чашечку кави - іншим ярликом мето-

Як і в діалогових вікнах, можна прибрати оформлення вікна, виконане за правилами віконного менеджера графічної оболонки операційної системи, методом setUndecorated (true). встановивши потім оформлення поточного Look and Feel методом

Внутрішнє вікно JInternalFrame

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

Оскільки внутрішнє вікно не залежить від операційної системи, а створюється повністю засобами Java, воно отримує за замовчуванням Java LF. На відміну від вікна JFrame програма сама може керувати вікном класу JInternalFrame. внутрішньому вікна можна дозволити або заборонити змінювати розміри, згортатися в ярлик і розвертатися на все осяжний вікно, закриватися. За замовчуванням всі ці чотири властивості відсутні. У внутрішнього вікна, створеного конструктором за замовчуванням JInternalFrame (). відсутні кнопки Згорнути. Розгорнути. Закрити. при установці курсора миші на межу вікна курсор не змінює свій вигляд і не дозволяє змінювати розміри вікна, заголовок відсутній. Крім того, вікно за умовчанням невидимо.

Можливості зміни вікна встановлюються конструкторами класу або методами

setClosable (boolean). setTitle (String). setIconifiable (boolean). setMaximizable (boolean). setResizable (boolean). setVisible (boolean).

Основний конструктор класу регулює всі ці можливості:

JInternalFrame (String title, boolean resizable, boolean closable, boolean maximizable, boolean iconifiable)

У решти конструкторів відсутній один або кілька параметрів, відсутні параметри отримують значення false. На рис. 14.11 показані два внутрішніх вікна, створені різними конструкторами. Перше вікно зрушено вліво вниз, воно частково

Діалогове вікно jdialog

Схожі статті