Une interface homme-machine

Pour ce deuxième exercice, on va utiliser les interfaces pour développer une interface graphique réutilisable. Ne vous inquiétez pas, vous allez tout comprendre.

Tout d'abord, un petit rappel sur les interfaces (à lire impérativement si vous ne savez pas ce qu'est une interface pour pouvoir faire l'exercice).

Les interfaces


La classe que nous allons développer est une interface graphique qui sera utilisable par plusieurs programmes. C'est un exemple type de l'utilisation des interfaces, de la réutilisation du code en Java et surtout de la séparation de l'implémentation et de l'interface homme machine (IHM).

Notre IHM servira pour l'affichage d'informations. Elle sera composée d'une case d'affichage, d'un bouton de rafraîchissement et d'un bouton de fermeture.

Elle aura l'allure suivante :

  1. Créez l'interface qui va spécifier les méthodes que devra absolument implémenter toute application qui utilisera notre IHM. Vous pouvez l'appeler Affichable.
    Elle doit contenir les méthodes suivantes public String get () et public void quitter().
  2. Créer la classe IHMAffichage qui dérive de Frame.
  3. Ajoutez les données suivantes :
  4. Utilisez le code suivant pour ajouter les différents éléments de la fenêtre (c'est le constructeur de IHMAffichage). C'est la version conforme au JDK 1.0. La gestion des événements ayant beaucoup changé dans la version 1.1, vous trouverez pour information la version 1.1 du programme en fin d'exercice.
    public IHMAffichage (String titre, Affichable app) {
    	super(titre);
    
    	appAffichable = app;
    
    	GridBagLayout gridbag = new GridBagLayout();
    	GridBagConstraints c = new GridBagConstraints();
    	setLayout(gridbag);
    
    	c.fill = GridBagConstraints.BOTH;
    	c.gridwidth = GridBagConstraints.REMAINDER;
    	c.weightx = 1.0;
    	c.weighty = 1.0;
    	texteAffiche = new TextArea(10, 60);
    	texteAffiche.setEditable(false);
    	gridbag.setConstraints(texteAffiche, c);
    	add(texteAffiche);
    
    	c.gridwidth = GridBagConstraints.REMAINDER;
    	c.weightx = 0.0;
    	c.weighty = 0.0;
    	boutonRafraichir = new Button("Rafraichir");
    	gridbag.setConstraints(boutonRafraichir, c);
    	add(boutonRafraichir);
    
    	c.gridwidth = GridBagConstraints.REMAINDER;
    	boutonQuitter = new Button("Quitter");
    	gridbag.setConstraints(boutonQuitter, c);
    	add(boutonQuitter);
    
    	pack();
    	show();
    }
    
  5. Ajoutez la méthode action suivante :
    public boolean action (Event event, Object arg) {
    	if (event.target == boutonRafraichir)
    		texteAffiche.setText( appAffichable.get() );
    	else if (event.target == boutonQuitter)
    		appAffichable.quitter();
    }
    
  6. Il ne vous reste plus qu'à créer une classe qui implémente l'interface Affichable, puis à créer une méthode main (dans cette classe par exemple) pour tester votre programme.