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).
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 :

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();
}
public boolean action (Event event, Object arg) {
if (event.target == boutonRafraichir)
texteAffiche.setText( appAffichable.get() );
else if (event.target == boutonQuitter)
appAffichable.quitter();
}