Знайомимося з Java Swing

Swing – це бібліотека для створення інтерфейсу користувача на Java. Починаючи з Java версії 1.1, Swing існує у вигляді окремої бібліотеки, а в Java 2 – у вигляді вбудованого в стандартний API набору класів. Можна сказати, що в Java 2 Swing перестав бути просто бібліотекою і став свого роду технологією створення інтерфейсу користувача на Java. Класи Swing розташовуються в пакеті javax.swing і його пiдпакетах.

Интерфейс Swing

Сучасні користувальницькі інтерфейси будуються за допомогою компонентів (component) або елементів управління (control), залежно від операційної системи або середовища розробки. Створюючи Java, спочатку як мова, а надалі як платформу розробки, компанія Sun Microsystems спочатку забезпечила його можливостями для створення уніфікованого інтерфейсу користувача на основі компонентів. У Java 1.0 для цього служив спеціальний набір об’єктів AWT (Abstract Window Toolkit, пакет java.awt). Як сказано в документації, «AWT містить всі класи для створення інтерфейсів користувача, а також для малювання та графіки». Надалі бібліотека AWT послужила основою для створення Swing.

У концепції AWT інтерфейс користувача будується за допомогою компонентів, які можуть бути двох типів:

• звичайні компоненти (наприклад, кнопки, списки) – клас Component;

• контейнери – такі компоненти, які можуть містити в собі інші компоненти (вікна, діалоги, панелі) – клас Container.

AWT першої версії (як це зазвичай буває з першими версіями) виявився повільним (через системи обробки подій) і взагалі не дуже зручним через невелику кількість компонентів і їх обмеженої функціональності. Тому не дивно, що нова версія Java 1.1 внесла серйозні зміни в AWT. У першу чергу це торкнулося системи обробки подій. У тому вигляді, в якому вона з’явилася у версії 1.1, вона залишилася й донині, благополучно мігрувати в Swing.

Незважаючи на те, що деяка частина функціональності AWT використовується в Swing, вони досить сильно відрізняються один від одного. У першу чергу це стосується принципу організації компонентів і контейнерів. Swing реалізує ширшу концепцію контейнерів – по функціональності будь-який компонент може бути контейнером, хоча на практиці далеко не всі компоненти використовуються в цій ролі. Також у Swing змінилася об’єктна модель компонентів – практично кожен компонент (за винятком найпростішого JLabel) володіє моделлю даних (дещо про XML-парсер можна прочитати тут). У AWT, навпаки, всі дані, використовувані компонентами для відображення, зберігаються всередині самих об’єктів-компонентів. В якості складових частин AWT і Swing входить до JFC.

Swing володіє деякими особливостями, які роблять його надзвичайно зручним для створення користувацьких інтерфейсів. У першу чергу варто згадати велике число компонентів. На сьогоднішній день в Swing з JDK версії 1.4 міститься більше 30 різних компонентів. Інша особливість, вигідно відрізняє Swing від його попередника AWT – так звана функціональність Look & Feel, що відповідає за зовнішнє подання Swing-компонентів. Згідно моделі MVC2, основною в Swing, логічна модель даних (модель) та її фізичне відображення (вид) безпосередньо не залежать один від одного.

Всі компоненти в Swing, за винятком найпростіших, на зразок JLabel, володіють власною моделлю даних. Також всі компоненти володіють своїм класом, яка відповідає за їх візуальне відображення. Всі класи, що відповідають за подання, знаходяться в пакеті javax.swing.plaf3. Пакет містить набір абстрактних класів, які задають основні методи, що відповідають за відображення стандартних компонентів Swing. Крім абстрактних класів, Swing забезпечує як мінімум один неабстрактне клас Look & Feel, так званий Metal, який підтримується всіма версіями JDK. Цей клас призначений для відображення Swing-компонентів і використовується за умовчанням. Зазвичай в JDK для різних платформ можна додати класи і для інших Look & Feel. Так, наприклад, в JDK для Windows присутній ще два додаткових – CDE / Motif і Windows. На основі абстрактних класів, що містяться в javax.swing.plaf, можна створювати власні класи для представлення компонентів.

Ще однією особливістю Swing є Action – функціональність, що забезпечує єдиний інтерфейс для отримання подій. Дана функціональність використовується головним чином при створенні меню і ToolBar. Події, що відбулися в результаті натискання на кнопку в ToolBar або вибору пункту меню, обробляються однаково. Принцип Action полягає в уніфікованому створенні специфічних подій – дій користувача, а також у прив’язці їх до елементів управління. Інтерфейс Action визначає наступний набір методів:

• addPropertyChangeListener ()-додати оброблювач даної дії;

• removePropertyChangeListener () – видалити обробник даної дії;

• getValue () – отримати властивість даної дії по ключу;

• putValue () – встановити властивість даної дії;

• isEnabled () – чи дозволено дана дія;

• setEnabled () – дозволити / заборонити дану дію.

До зумовленим властивостям дії відносяться:

• NAME – назва (якщо дана дія використовується для побудови пункту меню, це властивість буде відображено в якості назви опції меню);

• SMALLJCON – піктограма, асоційована з даним дією (це властивість істотно, головним чином, для ToolBar);

• SHORT_DESCRIPTION – короткий опис, зазвичай використовується для підказки (ToolTip).

Класи JMenuBar, JPopupMenu і JToolBar містять методи для додавання події, яка буде сгененріровано при натисканні на кнопку в ToolBar або при виборі пункту меню. Таким чином, маючи єдиний набір дій у додатку, з них можна конструювати все меню, звичайне і випадає, а також виносити частина дій в ToolBar. Крім того, подібний спосіб організації дозволяє мати єдиний обробник дій – подій від різних джерел. Swing-компоненти, будучи нащадками

GD Star Rating
loading...

Залишити коментар

©2011 softocop.ru, created by Kovnir Vladislav.
Softocop