L'objectif des JFC (Java Foundation Class ) est de fournir, à l'image des MFC (Microsoft Foundation classes ) un ensemble de classes de plus haut niveau que les classes de AWT .
Pour être précis, les Java Foundation Classes sont constitués de
Java Foundation Class
Les packages Swing sont intégrés à la version 1.2 de JDK et se nomment java.awt.swing, java.awt.swing.event, etc.Cette partie du document est conforme à la version Java 1.2beta3
Comme JFC s'inspire des IFC, les widgets JFC-Swing ont généralement un air de famille avec les widgets IFC . Les widgets AWT et les widgets de JFC-Swing coexistent dans JDK . Le nom des composants Swing commence par la lettre J (JButton, JLabel, etc.) On retrouve donc dans les Swing et des concepts identiques que ceux rencontrés dans AWT et des widgets et des fonctionnalités supplémentaires.
Par contre, contrairement aux composants de AWT , les composants Swing n'implante le modèle évènementiel de jdk 1.1 et quelques autres fonctionnalités propres à Swing
Rappellons que les objets de la classe java.awt.Container de AWT sont conçus pour pouvoir contenir des composants graphiques (java.awt.Component). Tous les composants Swing sont dérivées de la classe JComponent. Cette dernière est une classe dérivée de la classe java.awt.component. Autrement dit, n'importe quel composant Swing peut contenir un ou plusieurs autres composants AWT ou Swing . Cette approche permet de définir des composants beaucoup plus riches (souvenons nous qu'un bouton AWT ne pouvait contenir une image !!!)
JFC-Swing est composé des packages suivants:
Sauf contre indication, le ``look'' des widgets sont prédéfinis et correspondnet au ``look'' Java . Il est possible de donner un look plus personnalisé en fonction de la plate forme utilisée. A cette fin, Swing définit la classe UIManager qui se charge de configuration du ``look'' des widgets.
Swing possède plusieurs types de widgets:
JButton
JLabel
JRadioButton
JCheckbox
JComboBox
JList
JTree
JMenu
JProgressBar
JScrollPane
JSlider
JTable
JToolBar
JTooltip
JTabs
Swing ne se contente pas de définir des composants et fonctionnalités supplémentaires par rapport à AWT ; elle introduit une approche nouvelle de la programmation graphique : l'architecture Model-View-Controller (MVC) qui permet une meilleure gestion de
Une interface utilisateur obéissant à l'architecture MVC est composé de trois type d'objets qui communiquent entre-elles:

Architecture Model/View/Controller
Cette approche permet
Cette approche n'est pas forcément lié à la programmation des interfaces graphiques même si elle s'applique parfaitement à de telles applications.
La modèle Swing effectue une adaptation du modèle MVC dans lequel la vue et le contrôleur sont combinés en un même objet appelé delegate . Cette adaptation est relativement classique et permet de simplifier la communication entre la vue et le contrôleur.

Composant graphique JFC
Voici pour éclairer le modèle MVC, l'exemple d'un bouton.
Le modèle d'un bouton est illustré par l'interface ButtonModel qui est implantée par la classe DefaultButtonModel. Ce modèle schématise l'état interne d'un bouton et ses comportements:
String getActionCommand() int getMnemonic() boolean isArmed() boolean isEnabled() boolean isPressed() boolean isRollover() boolean isSelected()
void setActionCommand(String s) void setArmed(boolean b) void setEnabled(boolean b) void setGroup(ButtonGroup group) void setMnemonic(int key) void setPressed(boolean b) void setRollover(boolean b) void setSelected(boolean b)
void addActionListener(ActionListener l) void addChangeListener(ChangeListener l) void addItemListener(ItemListener l) void removeActionListener(ActionListener l) void removeChangeListener(ChangeListener l) void removeItemListener(ItemListener l)
void fireActionPerformed(ActionEvent e) void fireItemStateChanged(ItemEvent e) void fireStateChanged()
Le comportement de la vue et du contrôler est défini par l'interface ButtonUI. Les classes qui implante cette interface sont responsables de la représentation visuelle et de la gestion des évènements:
A TERMINER
Bien des points que nous vennons d'évoquer peuvent être ignorés lorsqu'on définit une application Swing de base. Il y a en fait plusieurs manières d'aborder la création d'une application Swing :