Exemple 1 d'utilisation d'une interface graphique

Attention: L'écriture objet n'est pas la meilleure (manque de définition de classes, voir exemple10)

/*

 * Main.java
 *
 * Created on March 31, 2008, 1:04 PM
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package graphisme1;

// NE PAS OUBLIER LES IMPORTS ...
import javax.swing.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.awt.*;

/**

 *
 * @author gmonard
 */
public class Main
{

    /** Creates a new instance of Main */
    public Main()
    {
    }

    /**

     * @param args the command line arguments
     */
    public static void main(String[] args)
    {
        FenetrePrincipale fenetre_principale = new FenetrePrincipale();
    }

}

/**

 * Fenetre principale: la premiere fenetre ouverte par le programme
 * 
 * La fenetre principale herite de la classe JFrame qui est en Java
 *    la classe primaire definissant une fenetre graphique.
 * `<p>`
 * ActionListener permet l'interaction entre la fenetre et la souris (voir plus loin)
 * `</p>`
 */
class FenetrePrincipale extends JFrame implements ActionListener
{
    // attributs de la fenetre principale
    JPanel contenu;
    JButton quitter;
    JButton cancel;

    public FenetrePrincipale()
    {
        /*

         * super: appel au constructeur de la classe heritee (JFrame)
         *        Le constructeur de JFrame prend 1 argument: le titre de la fenetre
         */
        super("Titre de la fenetre");
        /*

         * Definition de la taille de la fenetre
         * Par defaut, en Java, la fenetre a une taille nulle
         */
        this.setSize(300, 200);
        /*

         * On indique que la fermeture de cette fenetre (CLOSE)
         * implique la fin du programme (EXIT)
         */
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        /*

         * La fenetre est visible (par defaut, elle ne l'est pas)
         */
        this.setVisible(true);

        /*

         * Gestion de la fenetre:
         *  la fenetre contient un panneau (JPanel) contenant deux boutons (JButton): "Quitter" et "Cancel"
         */

        // creation des objets graphiques
        this.contenu = new JPanel();
        this.quitter = new JButton("Quitter");
        this.cancel = new JButton("Cancel");

        // placement des objets (hierarchie d'objets)
        this.add(contenu);     // le contenu est place dans la fenetre principale
        this.contenu.add(quitter);  // qui contient les boutons quitter
        this.contenu.add(cancel);   // et cancel

        /*

         * gestion des evenements:
         * 'quitter' et 'cancel' sont des boutons qui doivent
         * reagir au clic de la souris
         *
         * addActionListener permet d'indiquer en Java quel objet va
         * gerer les actions de "cliquage"
         *
         * c'est le 'pere' (=la fenetre principale =this) qui va gerer ces actions.
         *
         * En java, cela implique l'ajout d'une methode dans le 'pere': actionPerformed
         */
        this.quitter.addActionListener(this);
        this.cancel.addActionListener(this);

    }

    /**

     * Gestion des clics de souris
     * (le nom de la methode 'actionPerformed' est impose par Java
     *  et est du a l'interface 'addActionListener' utilisee ci-dessus)
     * @param evenement le clic ...
     */
    public void actionPerformed(ActionEvent evenement)
    {
        /*

         * On recherche sur quoi a-t'on cliquer
         */
        Object source = evenement.getSource();
        /*

         * Si on a clique sur le bouton "Quitter", on sort du programme (System.exit(0), 0 parce que tout va bien)
         */
        if (source == this.quitter)
        {
            System.out.printf("Sortie par le bouton Quitter");
            // quitter le logiciel
            System.exit(0);
        }
        else if (source == this.cancel)
        {
            System.out.printf("Sortie par le bouton Cancel");
            // quitter le logiciel
            System.exit(0);
        }
        else
        {
            // rien
        }
    }

}