Skip Navigation Links
Accueil
Java Standard EditionExpand Java Standard Edition
Java EE 5Expand Java EE 5
Visual Basic .Net 2005Expand Visual Basic .Net 2005
Visual C++ .Net 2005Expand Visual C++ .Net 2005
Visual C# .Net 2005Expand Visual C# .Net 2005
Cours ASP .Net 2.0Expand Cours ASP .Net 2.0
PostgresqlExpand Postgresql
LinuxExpand Linux
Visual Studio 2008Expand Visual Studio 2008
ASP 3.0 ClassiqueExpand ASP 3.0 Classique
Cours Javascript - DOM - DHTMLExpand Cours Javascript - DOM - DHTML
Cours AjaxExpand Cours Ajax
VBAExpand VBA
AssembleurExpand Assembleur
PerlExpand Perl
MembresExpand Membres
L'auteur du site
Nouveautés sur le site
Contacts
Plan du site
Accueil > Java Standard Edition > La bibliothèque Swing en Java
____________________________________________________________________________________________________
Connexion

LA BIBLIOTHEQUE SWING EN JAVA

12/12/2007

I) Généralités sur Swing

Pour les composants( « contrôles » en vocabulaire Microsoft) communs avec AWT, comme les Frame, les classes Swing possèdent le même nom que la classe AWT, mais avec un « J » devant. Exemple : JFrame en Swing, et Frame en AWT. Il n’existe aucune grosse différence par rapport avec la programmation AWT.
Les développeurs de Swing ont pensé à une espèce de compatibilité avec Swing. Ainsi on récupère aussi les méthodes de AWT, dans les classes Swing correspondantes, afin de faciliter l’apprentissage de Swing. Mais certaines méthodes rapatriées peuvent devenir « deprecated »( dépréciées). On vous conseille alors la méthode la mieux appropriée.

Par contre la gestion des évènements ne change pas de AWT.

I.1) Les imports

Vous aurez besoin d’un import javax.swing.* pour avoir accès à tous les composants Swing :

javax.swing.* ( « javax.swing » est l’équivalent d’un espace de nom en .net . On peut remarquer que le « j » et le « s » ne commencent pas par une majuscule. Au contraire des classes Java. On pourra alors aisément différencier les espaces de nom des classes).

Et vous aurez besoin de import.awt.event.* pour la gestion des évènements, et de import java.awt.* pour le gestionnaire FlowLayout(gestionnaire de positionnement, que nous verrons) .

import awt.event.*
import java.awt.*

I.2) Soyons plus concret

- Il faut se créer une classe de fenêtre, qui dérive de Jframe( javax.swing.Jframe).
public class maFenetre extends javax.swing.Jframe
{

}

- Déclarez en attribut les éléments de contrôle( synonyme de composant, ou encore de « contrôle » en .net).

public class maFenetre extends javax.swing.Jframe
{
private javax.swing.Jbutton monBouton ;
}
Puis instanciez ces composants :

monBouton = new Jbutton( « Quitter ») ; // « Quitter » est le texte affiché dans le bouton

Et on les ajoute à notre fenêtre :
maFenetre.add( monBouton) ;

I.3) Les gestionnaires de positionnement( ou layout managers)

D’accord, on peut très bien uniquement indiquer la taille et la position de chaque composant. Mais cela possède de multiples désavantages, ne serait-ce que la difficulté à écrire le code. Et aussi une dépendance à la taille de la fenêtre qui est embêtante( pour diverses raisons, en voici une : n’oublions pas qu’on veut pouvoir s’exécuter sous plusieurs systèmes d’exploitation. Ou encore on veut pouvoir changer facilement la taille de la fenêtre).
Le langage Java résoud ce problème avec le concept de gestionnaire de positionnement. Le gestionnaire de positionnement permet d’organiser le placement de ses composants, tout en étant indépendant de l’environnement.
Un gestionnaire de positionnement est forcément rattaché à un conteneur. On le relie grâce à la méthode setLayout( ) du conteneur.

I.3.a) Le FlowLayout

Le FlowLayout est le gestionnaire de positionnement le plus simple. Il est, à mon goût, trop primitif pour répondre à tous les besoins, mais il peut aider si on veut tester rapidement un programme, ou si on a besoin d’un affichage simple. Le mode d’organisation est le suivant : chaque composant ajouté est placé à la suite du dernier composant, et sont centrés. Si la ligne courante n’est pas suffisamment grande pour contenir le dernier composant, une nouvelle ligne est ajoutée.

Remarque : je n’ai pas réussi à changer la taille de la fenêtre avec setSize, lorsqu’un FlowLayout était utilisé pour la fenêtre. Ce qui peut se comprendre, car on va alors contre le principe de positionnement automatique !

Remarque : maFenetre.setVisible(true); permet d’afficher la fenêtre.

Remarque : sans maFenetre.pack(); on ne voit pas les boutons, dans l’exemple, on ne voit que la barre de titre. Permet que la taille de la fenêtre soit adaptée au résultat d’affichage donné par le gestionnaire de positionnement choisi. Mettez le systématiquement ( si vous utilisez un gestionnaire de positionnement), pour être tranquille.

Exemple de fenêtre avec 2 boutons et un label :

import javax.swing.*;

 

import java.awt.*;

 

//!!!!!! CONTIENT LE MAIN !!!!!!!!!!!

 

//17/12/2007

//Auteur: Sabri Koffler, pour site InfKoffler

 

public class MonTypeFenetre extends JFrame{

     

      JButton bouton1;

      JButton bouton2;

      JLabel label3;

     

      public MonTypeFenetre()

      {

                 

            this.setLayout(new FlowLayout());

           

            bouton1 = new JButton("Bouton No1");

            bouton2 = new JButton("Bouton No2");

            label3 = new JLabel( "Label No1");

           

            this.add( bouton1);

            this.add( bouton2);

            this.add( label3);

      }

     

      /**

       * @param args

       */

           

      public static void main(java.lang.String[] args) {

           

            MonTypeFenetre    maFenetre = new MonTypeFenetre();

           

            maFenetre.pack(); //Sans cette ligne, on ne voit pas les boutons,

                                   //on ne voit que la barre de titre.

                                   //Permet que la taille de la fenêtre soit adaptée au

                                   //résultat d'affichage donné par le gestionnaire positionnement choisi.

           

            maFenetre.setVisible(true);  //Permet d'afficher la fenêtre

      }

           

}

I.3.b) Travailler sans gestionnaire de positionnement

   Pour positionner d’une manière très précise et personnalisé, rien ne remplace l’absence de gestionnaire de positionnement, après tout c’est la méthode naturelle de dessin ! Les gestio