Swing permet de concevoir des interfaces graphiques en Java. C'est une librairie fournie avec la JDK (Java Developpement Kit).Swing comme AWT(Abstract Windowing Toolkit) permet de créer une Interface Utilisateur et de la gérer. La procédure de construction d'une interface Swing est similaire à celle d'AWT : créer un cadre, des composants dans un cadre, une mise en page pour ces composants dans ce cadre, des méthodes en réponse aux actions de l'utilisateur.
L'Abstract Windowing Toolkit, est apparue dans la version 1.0 du JDK, en 1995. Le but de cette bibliothèque était de définir un ensemble de composants graphiques communs à une variété de systèmes d'exploitation. Ceux-ci appartiennent à une couche abstraite qui les lie à leurs équivalents natifs sur chaque plate-forme. Grâce à la technologie JNI, chaque classe Java représentant un élément graphique, comme le java.awt.Button, peut effectuer des appels système ce qui implique la réécriture de la couche basse de AWT pour chaque OS. Cette approche particulière permet aux développeurs de n'écrire qu'une seule fois leur application, respectant l'un des idéaux de Java : Write Once, Run Anywhere. L'architecture AWT souffre malheureusement de problèmes particulièrement gênants. Outre ses nombreux bugs que Sun Microsystems a parfois tardé à corriger, cette API se révèle parfois bien trop limitée. Le concept même de AWT impose à ses auteurs de ne choisir que les composants communs à tous les environnements fenêtrés du marché. C'est pourquoi cette bibliothèque ne propose pas de classes pour dessiner des arbres ou des tableaux.
Dans notre interace graphique, nous avons trois niveaux :