L'application est représentée par les deux images ci-dessous. Quand on appuie sur le bouton trace, le disque rouge apparaît, quand on appuie sur le bouton efface, le disque disparaît. :
On emploie toujours ici la classe Ardoise.
On utilise ici une même classe pour modéliser les deux boutons. Le constructeur de la classe reçoit en paramètre, outre le nom du bouton et l'ardoise dans laquelle le disque apparaît, une valeur booléenne indiquant si, dans l'action il s'agit de tracer le disque (valeur true) ou bien de l'effacer (valeur false).
On profite ici de cet exemple pour montrer une autre façon de faire pour l'interface graphique, en étendant la classe JFrame plutôt que la classe JPanel.
import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JButton; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; class BoutonArdoise extends JButton implements ActionListener { private Ardoise ardoise; private boolean existe; BoutonArdoise(String nom, Ardoise ardoise, boolean existe) { super(nom); this.ardoise = ardoise; addActionListener(this); this.existe = existe; } public void actionPerformed(ActionEvent e) { ardoise.setPossedeDisque(existe); ardoise.repaint(); } } public class Boutons2Bis extends JFrame { public Boutons2Bis() { Ardoise ardoise = new Ardoise(); BoutonArdoise trace = new BoutonArdoise("trace", ardoise, true); BoutonArdoise efface = new BoutonArdoise("efface", ardoise, false); JPanel lesBoutons = new JPanel(); lesBoutons.add(trace); lesBoutons.add(efface); add(lesBoutons, BorderLayout.NORTH); add(ardoise, BorderLayout.CENTER); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocation(200,200); pack(); setVisible(true); } } class EssaiBoutons2Bis { public static void main(String[] arg) { new Boutons2Bis(); } }Pour accéder au fichier Boutons2Bis.java.
© Irène Charon, Télécom ParisTech 2011