Nous y voilà... Avant de nous lancer à corps perdu, vous devez savoir ce que nous allons utiliser...
Vu que nous allons développer des interfaces avec
swing, vous devez savoir que toutes les classes
swing se trouvent dans le package
javax.swing. Mais ne vous y trompez pas, nous allons utiliser aussi des objets
awt (java.awt), mais pas de composants !
Pour faire simple, un composant peut être un bouton, une zône de texte, une case à cocher... Bref, tout ce qui peut interagir avec vous !
Il est très fortement recommandé de ne pas mélanger les composants swing et awt ! ! Ceci pour cause de conflit ! Si vous faites ceci vous aurez de très grandes difficultés à faire une IHM stable et valide ! En effet, pour faire simple, swing et awt se basent sur les mêmes fondements mais diffèrent sur l'utilisation de ces fondements...
Pourquoi ?
Tout simplement car les objets de ces deux packages ne sont pas construits de la même façon et que des conflits peuvent survenir (superposition de composants...).
Je ne vous demande pas de créer un projet avec une classe
main, celui-ci doit être prêt depuis des lustres, facile !
Pour utiliser une fenêtre de type
JFrame, vous devez instancier celui-ci. Comme ceci :
Code : Java | import javax.swing.JFrame;
public class Test {
public static void main(String[] args){
JFrame fenetre = new JFrame();
}
}
|
Eh ! Lorsque j'exécute mon code, rien ne s'affiche !
Oui, parce que par défaut, votre
JFrame n'est pas visible...
Pour pouvoir l'afficher à l'écran, vous devez lui dire "
sois visible", comme ça :
Code : Java | import javax.swing.JFrame;
public class Test {
public static void main(String[] args){
JFrame fenetre = new JFrame();
fenetre.setVisible(true);
}
}
|
Et lorsque vous exécuterez votre code, vous pourrez voir ceci :
Eh, mais tu te moques de nous ! Elle est minuscule !
Bienvenue dans le monde de la programmation événementielle ! Il faut que vous vous y fassiez... Vos composants ne sont pas intelligents : il va falloir leur dire tout ce qu'ils doivent faire !
Bon, pour avoir une fenêtre plus conséquente, il faudrait :
- qu'elle soit plus grande ; en effet, c'est mieux ;
- qu'elle ait un titre (c'est pas du luxe !) ;
- si elle pouvait être centrée au milieu de mon écran, ce serait parfait !

Par contre, vous ne l'avez peut-être pas remarqué mais, lorsque vous cliquez sur la croix rouge (pour fermer votre fenêtre), cette action ne termine pas le processus dans Eclipse !
Pour réellement terminer le processus de l'application, vous devrez ajouter une autre instruction.
Pour chacune des choses que je viens d'énumérer, il y a aura une méthode à appeler pour que votre
JFrame sache à quoi s'en tenir !
Voici un code qui reprend toutes nos doléances :
Code : Java 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 | import javax.swing.JFrame;
public class Test {
public static void main(String[] args){
JFrame fenetre = new JFrame();
//Définit un titre pour votre fenêtre
fenetre.setTitle("Ma première fenêtre java");
//Définit une taille pour celle-ci ; ici, 400 px de large et 500 px de haut
fenetre.setSize(400, 500);
//Nous allons maintenant dire à notre objet de se positionner au centre
fenetre.setLocationRelativeTo(null);
//Terminer le processus lorsqu'on clique sur "Fermer"
fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fenetre.setVisible(true);
}
}
|
Et voici le résultat :
Par contre, je pense qu'il vaudrait mieux que nous ayons notre propre objet. Comme ça, on n'aura pas à redéfinir les attributs à chaque fois... Donc créons notre propre classe !