Swing — інструментарій для створення графічного інтерфейсу користувача (GUI) мовою програмування Java. Це частина (JFC, Java Foundation Classes).
Swing розробляли для забезпечення функціональнішого набору програмних компонентів для створення графічного інтерфейсу користувача, ніж у ранішого інструментарію AWT. Компоненти Swing підтримують специфічні [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 — платформо-незалежна бібліотека, що означає, що програму з використанням Swing можна запустити на всіх платформах, які підтримують JVM.
- Можливість для розширення: Swing — дуже розподілена архітектура, яка дозволяє «підключати» реалізації користувача вказаної інфраструктури інтерфейсів: користувачі можуть створити свою власну реалізацію цих компонентів, щоб замінити компоненти без обумовлення (за замовчуванням). Взагалі, користувачі Swing можуть розширити структуру, продовжуючи (з допомогою extends) існуючі класи і/або створюючи альтернативні реалізації основних компонентів.
Приклад
Наступний код демонструє основи використання Swing. Ця програма зображує вікно (JFrame), у вікні міститиметься кнопка з написом «Натисніть сюди» на ній та написом праворуч «Ця кнопка не робить нічого:».
package com.example; // Імпортує swing і AWT класи import java.awt.EventQueue; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.WindowConstants; /** * Простий приклад використання Swing */ public class SwingExample { public static void main(String[] args) { // Упевнюємося, що всі виклики Swing/AWT виконуються Event Dispatch Thread ("EDT") EventQueue.invokeLater(new Runnable() { @Override public void run() { // Створюємо JFrame, що має вигляд вікна з "декораціями", // наприклад заголовком і кнопкою закриття JFrame f = new JFrame("Приклад вікна Swing"); // Установлюємо простий менеджер розмітки, що впорядковує всі компоненти f.setLayout(new FlowLayout()); // Додаємо компоненти f.add(new JLabel("Ця кнопка не робить нічого:")); f.add(new JButton("Натисніть сюди!")); // "Пакує" вікно, тобто робить його величину відповідну до її компонентів f.pack(); // Встановлюємо стандартну операцію закриття для вікна, // без цього вікно не закриється після активування кнопки закриття // (Стандартно HIDE_ON_CLOSE, що просто приховує вікно) f.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); // Уснановлюємо видимість=істина, тим самим показуючи вікно на екрані f.setVisible(true); } }); } }
Література
- Matthew Robinson, Pavel Vorobiev: Swing, Second Edition, Manning,
- David M. Geary: Graphic Java 2, Volume 2: Swing, Prentice Hall,
- John Zukowski: The Definitive Guide to Java Swing, Third Edition, Apress,
- James Elliott, , , David Wood, Brian Cole: Java Swing, O'Reilly,
- Kathy Walrath, , , : The JFC Swing Tutorial: A Guide to Constructing GUIs, Addison-Wesley Professional,
- Joshua Marinacci, Chris Adamson: Swing Hacks, O'Reilly,
- Герберт Шилдт: SWING: руководство для начинающих. — М.: «Вильямс», 2007. — С. 704. —
- Иван Портянкин: Swing: Эффектные пользовательские интерфейсы, Санкт-Петербург
Посилання
- Підручник Swing від Sun [ 29 липня 2005 у Wayback Machine.]
Див. також
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Swing instrumentarij dlya stvorennya grafichnogo interfejsu koristuvacha GUI movoyu programuvannya Java Ce chastina JFC Java Foundation Classes Priklad interfejsu programi iz Swing komponentami na Java 5 dlya X Window System Swing rozroblyali dlya zabezpechennya funkcionalnishogo naboru programnih komponentiv dlya stvorennya grafichnogo interfejsu koristuvacha nizh u ranishogo instrumentariyu AWT Komponenti Swing pidtrimuyut specifichni en moduli sho dinamichno pidklyuchayutsya Zavdyaki yim mozhliva emulyaciya grafichnogo interfejsu platformi tobto do komponentu mozhna dinamichno pidklyuchiti inshi specifichni dlya danoyi operacijnoyi sistemi viglyad i povedinku Osnovnim nedolikom takih komponentiv ye vidnosno povilna robota hocha ostannim chasom ce ne vdalosya pidtverditi cherez zrostannya potuzhnosti personalnih komp yuteriv Pozitivna storona universalnist interfejsu stvorenih program na vsih platformah IstoriyaNa pochatku isnuvannya Java klasiv Swing ne bulo vzagali Cherez slabki miscya v AWT pochatkovij GUI sistemi Java bulo stvoreno Swing AWT viznachaye bazovij nabir elementiv keruvannya vikon ta dialogiv yaki pidtrimuyut pridatnij do vikoristannya ale obmezhenij u mozhlivostyah grafichnij interfejs Odniyeyu z prichin obmezhenosti AWT ye te sho AWT peretvoryuye svoyi vizualni komponenti u vidpovidni yim ekvivalenti sho ne zalezhat vid platformi yaki nazivayutsya rivnopravnimi komponentami Ce oznachaye sho zovnishnij viglyad komponentiv viznachayetsya platformoyu a ne zakladayetsya v Java Oskilki komponenti AWT vikoristovuyut ridni resursi kodu voni nazivayutsya vagovitimi angl highweigh Vikoristannya ridnih rivnopravnih komponentiv porodzhuye deyaki problemi Po pershe u zv yazku iz rizniceyu sho isnuye mizh operacijnimi sistemami komponent mozhe viglyadati abo navit vesti sebe po riznomu na riznomanitnih platformah Taka minlivist superechila filosofiyi Java napisane odin raz pracyuye skriz Po druge zovnishnij viglyad kozhnogo komponenta buv fiksovanim oskilki use zalezhalo vid platformi i ce nemozhlivo bulo zminiti prinajmni ce vazhko bulo zrobiti Po tretye vikoristannya vagovitih komponentiv tyagnulo za soboyu poyavu novih obmezhen Napriklad vagovitij komponent zavzhdi maye pryamokutnu formu i ye neprozorim Nezabarom pislya poyavi pochatkovoyi versiyi Java stalo ochevidnim sho obmezhennya vlastivi AWT buli nastilki nezruchnimi sho potribno bulo znajti krashij pidhid U rezultati z yavilis klasi Swing yak chastina biblioteki bazovih klasiv Java JFC V 1997 roci voni buli vklyucheni do Java 1 1 u viglyadi okremoyi biblioteki A pochinayuchi z versiyi Java 1 2 klasi Swing a takozh usi ostanni sho vhodili do JFC stali povnistyu integrovanimimi u Java ArhitekturaCej rozdil potrebuye dopovnennya lipen 2008 Nezalezhnist vid platformi Swing platformo nezalezhna biblioteka sho oznachaye sho programu z vikoristannyam Swing mozhna zapustiti na vsih platformah yaki pidtrimuyut JVM Mozhlivist dlya rozshirennya Swing duzhe rozpodilena arhitektura yaka dozvolyaye pidklyuchati realizaciyi koristuvacha vkazanoyi infrastrukturi interfejsiv koristuvachi mozhut stvoriti svoyu vlasnu realizaciyu cih komponentiv shob zaminiti komponenti bez obumovlennya za zamovchuvannyam Vzagali koristuvachi Swing mozhut rozshiriti strukturu prodovzhuyuchi z dopomogoyu extends isnuyuchi klasi i abo stvoryuyuchi alternativni realizaciyi osnovnih komponentiv PrikladNastupnij kod demonstruye osnovi vikoristannya Swing Cya programa zobrazhuye vikno JFrame u vikni mistitimetsya knopka z napisom Natisnit syudi na nij ta napisom pravoruch Cya knopka ne robit nichogo package com example Importuye swing i AWT klasi import java awt EventQueue import java awt FlowLayout import javax swing JButton import javax swing JFrame import javax swing JLabel import javax swing WindowConstants Prostij priklad vikoristannya Swing public class SwingExample public static void main String args Upevnyuyemosya sho vsi vikliki Swing AWT vikonuyutsya Event Dispatch Thread EDT EventQueue invokeLater new Runnable Override public void run Stvoryuyemo JFrame sho maye viglyad vikna z dekoraciyami napriklad zagolovkom i knopkoyu zakrittya JFrame f new JFrame Priklad vikna Swing Ustanovlyuyemo prostij menedzher rozmitki sho vporyadkovuye vsi komponenti f setLayout new FlowLayout Dodayemo komponenti f add new JLabel Cya knopka ne robit nichogo f add new JButton Natisnit syudi Pakuye vikno tobto robit jogo velichinu vidpovidnu do yiyi komponentiv f pack Vstanovlyuyemo standartnu operaciyu zakrittya dlya vikna bez cogo vikno ne zakriyetsya pislya aktivuvannya knopki zakrittya Standartno HIDE ON CLOSE sho prosto prihovuye vikno f setDefaultCloseOperation WindowConstants DISPOSE ON CLOSE Usnanovlyuyemo vidimist istina tim samim pokazuyuchi vikno na ekrani f setVisible true LiteraturaMatthew Robinson Pavel Vorobiev Swing Second Edition Manning ISBN 1 930110 88 X David M Geary Graphic Java 2 Volume 2 Swing Prentice Hall ISBN 0 13 079667 0 John Zukowski The Definitive Guide to Java Swing Third Edition Apress ISBN 1 59059 447 9 James Elliott David Wood Brian Cole Java Swing O Reilly ISBN 0 596 00408 7 Kathy Walrath The JFC Swing Tutorial A Guide to Constructing GUIs Addison Wesley Professional ISBN 0 201 91467 0 Joshua Marinacci Chris Adamson Swing Hacks O Reilly ISBN 0 596 00907 0 Gerbert Shildt SWING rukovodstvo dlya nachinayushih M Vilyams 2007 S 704 ISBN 0 07 226314 8 Ivan Portyankin Swing Effektnye polzovatelskie interfejsy Sankt Peterburg ISBN 5 469 00005 2PosilannyaPidruchnik Swing vid Sun 29 lipnya 2005 u Wayback Machine Div takozhSWT NetBeans EclipseCya stattya ye zagotovkoyu Vi mozhete dopomogti proyektu dorobivshi yiyi Ce povidomlennya varto zaminiti tochnishim