
Swing — інструментарій для створення графічного інтерфейсу користувача (GUI) мовою програмуванняJava. Це частинабібліотеки базових класів Java (JFC, Java Foundation Classes).
Swing розробляли для забезпечення функціональнішого набору програмних компонентів для створенняграфічного інтерфейсу користувача, ніж у ранішого інструментаріюAWT. Компоненти Swing підтримують специфічніlook-and-feel[en] модулі, що динамічно підключаються. Завдяки їм можлива емуляція графічного інтерфейсу платформи (тобто до компоненту можна динамічно підключити інші, специфічні для даної операційної системи вигляд і поведінку). Основним недоліком таких компонентів є відносно повільна робота, хоча останнім часом це не вдалося підтвердити через зростання потужності персональних комп'ютерів. Позитивна сторона — універсальність інтерфейсу створених програм на всіх платформах.
На початку існування Java класів Swing не було взагалі. Через слабкі місця в AWT (початковій GUI системі Java) було створено Swing. AWT визначає базовий набір елементів керування, вікон та діалогів, які підтримують придатний до використання, але обмежений у можливостях графічний інтерфейс. Однією з причин обмеженості AWT є те, що AWT перетворює свої візуальні компоненти у відповідні їм еквіваленти, що не залежать від платформи, які називаються рівноправними компонентами. Це означає, що зовнішній вигляд компонентів визначається платформою, а не закладається в Java. Оскільки компоненти AWT використовують «рідні» ресурси коду, вони називаються ваговитими (англ.highweigh).
Використання «рідних» рівноправних компонентів породжує деякі проблеми. По-перше, у зв'язку із різницею, що існує між операційними системами, компонент може виглядати або навіть вести себе по-різному на різноманітних платформах. Така мінливість суперечила філософії Java: «написане один раз, працює скрізь». По-друге, зовнішній вигляд кожного компонента був фіксованим (оскільки усе залежало від платформи), і це неможливо було змінити (принаймні, це важко було зробити). По-третє, використання ваговитих компонентів тягнуло за собою появу нових обмежень. Наприклад, ваговитий компонент завжди має прямокутну форму і є непрозорим.
Незабаром після появи початкової версії Java, стало очевидним, що обмеження, властиві AWT, були настільки незручними, що потрібно було знайти кращий підхід. У результаті з'явились класи Swing як частина бібліотеки базових класів Java (JFC). В 1997 році вони були включені до Java 1.1 у вигляді окремої бібліотеки. А починаючи з версії Java 1.2, класи Swing (а також усі останні, що входили до JFC) стали повністю інтегрованимими у Java.
Цей розділпотребуєдоповнення.(липень 2008) |
Наступний код демонструє основи використання Swing. Ця програма зображує вікно (JFrame), у вікні міститиметься кнопка з написом «Натисніть сюди» на ній та написом праворуч «Ця кнопка не робить нічого:».
packagecom.example;// Імпортує swing і AWT класиimportjava.awt.EventQueue;importjava.awt.FlowLayout;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.WindowConstants;/** * Простий приклад використання Swing */publicclassSwingExample{publicstaticvoidmain(String[]args){// Упевнюємося, що всі виклики Swing/AWT виконуються Event Dispatch Thread ("EDT")EventQueue.invokeLater(newRunnable(){@Overridepublicvoidrun(){// Створюємо JFrame, що має вигляд вікна з "декораціями",// наприклад заголовком і кнопкою закриттяJFramef=newJFrame("Приклад вікна Swing");// Установлюємо простий менеджер розмітки, що впорядковує всі компонентиf.setLayout(newFlowLayout());// Додаємо компонентиf.add(newJLabel("Ця кнопка не робить нічого:"));f.add(newJButton("Натисніть сюди!"));// "Пакує" вікно, тобто робить його величину відповідну до її компонентівf.pack();// Встановлюємо стандартну операцію закриття для вікна,// без цього вікно не закриється після активування кнопки закриття// (Стандартно HIDE_ON_CLOSE, що просто приховує вікно)f.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);// Уснановлюємо видимість=істина, тим самим показуючи вікно на екраніf.setVisible(true);}});}}
| Ця стаття єзаготовкою. Ви можете допомогти проєкту,доробивши її. Це повідомлення варто замінититочнішим. |