Java Swing - це сучасне розширення бібліотеки AWT користувацького інтерфейсу, що включає нові та покращені компоненти. Вона використовується як для клієнтських , так і серверних програм (аплети, сервлети тощо). Бібліотека є частиною Java Foundation Classes. Назви класів, що представляють компоненти GUI, починаються літерою J.
Архітектура Swing компонентів дозволяє адаптувати їх вигляд та поведінку. ЇХ можна додавати до існуючих AWT компонент, наприклад, JSlider, JButton та JCheckbox можна використовувати поруч з AWT компонентами labels, textfields та scrollbars.
Компоненти Swingмають архітектуру MVC (модель представля.є дані, перегляд дозволяє контролювати дані та контролер приймає дані та реалізує їх зміни). Ієрархія класів наведена на рис.6.

Рис.6. Ієрархія класів в бібліотеці Swing
Нижче наведено приклад програми з використання двох компонент JFrame, JLabel: import javax.swing.JFrame;import javax.swing.JLabel; public class HelloWorldFrame extends JFrame{ public static void main(String args[]){ new HelloWorldFrame(); } HelloWorldFrame(){ JLabel jlbHelloWorld = new JLabel("Hello World"); add(jlbHelloWorld); this.setSize(100, 100);// pack(); setVisible(true); }} Результатом роботи програми є вікно на рис.7.

Перерахуємо деякі компоненти:
JFrame , JInternalFrame , JWindow, JOptionPane, JLabel, JTextField , JPasswordField, JTextArea, JButton JRadioButton, JCheckBox , JComboBox, JList, JTabbedPane, JMenuBar,
Scrollable, JPopupMenu, JToolBar, BorderLayout, FlowLayout, GridLayout, GridBagLayout.
Ще один приклад ілюструє формування списку об’єктів: import java.awt.*;import java.awt.event.*;import javax.swing.*; public class SimpleList extends JPanel { String label[] = { "Zero","One","Two","Three","Four","Five","Six", "Seven","Eight","Nine","Ten","Eleven" }; JList list; public SimpleList() { this.setLayout(new BorderLayout()); list = new JList(label); JScrollPane pane = new JScrollPane(list); JButton button = new JButton("Print"); button.addActionListener(new PrintListener()); add(pane, BorderLayout.CENTER); add(button, BorderLayout.SOUTH); } public static void main(String s[]) { JFrame frame = new JFrame("Simple List Example"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setContentPane(new SimpleList()); frame.setSize(250, 200); frame.setVisible(true); } // клас з функцією відповіді на натискання кнопки class PrintListener implements ActionListener { public void actionPerformed(ActionEvent e) { int selected[] = list.getSelectedIndices(); System.out.println("Selected Elements: "); for (int i=0; i < selected.length; i++) { String element = (String)list.getModel().getElementAt(selected[i]); System.out.println(" " + element); } } }}