Swing (Java)

Swing — інструментарій для створення GUI на мові програмування Java. Це частина бібліотеки базових класів Java (JFC, Java Foundation Classes).
Swing розробляли, щоб забезпечити більш функціональний набір програмних компонентів графічного інтерфейсу користувача ніж у ранішого інструментарію AWT. Компоненти Swing підтримують специфічні look-and-feel модулі, що динамічно підключаються. Завдяки ним можлива адаптація до графічного інтерфейсу платформи (тобто до компоненту можна динамічно підключити інший, специфічний для даної операційної системи вигляд і поведінку). Основним мінусом таких компонентів є відносно повільна робота. Позитивна сторона —- універсальність інтерфейсу створених застосунків на всіх платформах.
Історія
На початку існування Java класів Swing не було взагалі. Через слабкі місця в AWT (початковій GUI системі Java) було створено Swing. AWT визначає базовий набір елементів керування, вікон та діалогів, які підтримують придатний до використання, але обмежений у можливостях графічний інтерфейс. Однією з причин обмеженості AWT є те, що AWT перетворює свої візуальні компоненти у відповідні їм еквіваленти, що не залежать від платформи, які називаються рівноправними компонентами. Це означає, що зовнішній вигляд компонентів визначається платформою, а не закладається в Java. Оскільки компоненти AWT використовують "рідні" ресурси коду, вони називаються ваговитими.
Використання "рідних" рівноправних комонентів породжує деякі проблеми. По-перше, у зв'язку із різницею, що існує між операційними системами, компонент може виглядати або навіть вести себе по-різному на різноманітних платформах. Така мінливість суперечила філософії Java: "написане один раз, працює скрізь". По-друге, зовнішній вигляд кожного компонента був фіксованим(оскільки усе залежало від платформи), і це неможливо було змінити(принаймні, це важко було зробити). По-третє, використання ваговитих компонентів тягнуло за собою появу нових обмежень. Наприклад, ваговитий компонент завжди має прямокутну форму і є непрозорим.
Незабаром після появи початкової версії Java, стало очевидним, що обмеження, властиві AWT, були настільки важливими, що потрібно було знайти кращий підхід. в результаті з'явились класи Swing як частина бібліотеки базових класів Java (JFC). В 1997 році вони були включені до Java 1.1 у вигляді окремої бібліотеки. А починаючи з версії Java 1.2, класи Swing (а також усі останні, що входили до JFC) стали повністю інтегрованимим в Java.
Архітектура
![]() | Цей розділ потребує доповнення. |
- Незалежність від платформи: Swing —- платформо-незалежна бібліотека, що означає, що програму з використанням Swing можна запустити на всіх платформах, які підтримують JVM.
- Можливість для розширення: Swing —- дуже розділена архітектура, яка дозволяє «підключати» реалізації користувача вказаної інфраструктури інтерфейсів: користувачі можуть створити свою власну реалізацію цих компонентів, щоб замінити компоненти без обумовлення (за замовчуванням). Взагалі, користувачі Swing можуть розширити структуру, продовжуючи (з допомогою extend) існуючі класи і/або створюючи альтернативні реалізації основних компонентів.
Приклад
наступний код - це основи використання Swing. Ця програма зображує вікно (JFrame).
package com.example;
// Import the swing and AWT classes needed
import java.awt.EventQueue;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.WindowConstants;
/**
* Basic Swing example.
*/
public class SwingExample {
public static void main(String[] args) {
// Make sure all Swing/AWT invocations are done on the Event Dispatch Thread ("EDT")
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
// Create a JFrame, which is a Window with "decorations", i.e. title, border and close-button
JFrame f = new JFrame("Swing Example Window");
// Set a simple Layout Manager that arranges the contained Components
f.setLayout(new FlowLayout());
// Add some Components
f.add(new JLabel("This is a button that does nothing:"));
f.add(new JButton("Press me!"));
// "Pack" the window, making it "just big enough".
f.pack();
// Set the default close operation for the window, or else the program won't exit when clicking close button
// (The default is HIDE_ON_CLOSE, which just makes the window invisible)
f.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
// Set the visibility as true, thereby displaying it
f.setVisible(true);
}
});
}
}
Література
- Matthew 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-590-59447-9
- James Elliott, Robert Eckstein, Marc Loy, David Wood, Brian Cole: Java Swing, O'Reilly, ISBN 0-596-00408-7
- Kathy Walrath, Mary Campione, Alison Huml, Sharon Zakhour: 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
- Герберт Шилдт: SWING: руководство для начинающих. — М.: «Вильямс», 2007. — С. 704. — ISBN 0-07-226314-8
- Иван Портянкин: Swing: Эффектные пользовательские интерфейсы, Санкт-Петербург ISBN 5-469-00005-2
Зовнішні посилання
Див. також