Il s'agit d'étudier l'utilisation d'un java.awt.CardLayout, gestionnaire de répartition qui permet d'avoir plusieurs composants graphiques tels que l'un d'entre eux seulement soit visible à un moment donné. Tout se passe comme si on avait un jeu de cartes et qu'on pouvait choisir la carte visible. On utilise la classe java.awt.CardLayout, que nous vous encourageons à consulter en ligne.
Ci-dessous, utilisez les boutons pour voir ce qui se passe.
Voici le code d'une application faisant surgir une
fenêtre dont l'intérieur correspond à
ce que l'on voit ci-dessus.
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.SwingConstants;
class VoirCercle extends JPanel implements ActionListener {
JButton bouton1 = new JButton("trace");
JButton bouton2 = new JButton("efface");
boolean disque = false;
VoirCercle() {
bouton1.setActionCommand("tracer");
bouton2.setActionCommand("effacer");
add(bouton1);
add(bouton2);
bouton1.addActionListener(this);
bouton2.addActionListener(this);
setBackground(Color.CYAN);
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
if (disque) g.setColor(Color.RED);
else g.setColor(Color.CYAN);
g.fillOval(100, 50, 100, 100);
}
public void actionPerformed(ActionEvent e) {
String commande = e.getActionCommand();
if (commande.equals("tracer")) disque = true;
else if (commande.equals("effacer")) disque = false;
repaint();
}
}
public class Cartes extends JFrame implements ActionListener {
JButton precedent = new JButton("precedent");
JButton suivant = new JButton("suivant");
JButton leMessage = new JButton("message");
CardLayout gestionnaireDesCartes = new CardLayout();
JPanel jeuCartes = new JPanel();
public Cartes() {
JPanel p = new JPanel();
JTextArea zone = new JTextArea("Vous pouvez ecrie ici.");
JLabel message = new JLabel("Bonjour", SwingConstants.CENTER);
VoirCercle voirCercle = new VoirCercle();
jeuCartes.setLayout(gestionnaireDesCartes);
jeuCartes.setPreferredSize(new Dimension(200, 200));
jeuCartes.add(zone, "zone");
jeuCartes.add(voirCercle, "voir un cercle");
message.setOpaque(true);
jeuCartes.add(message, "message");
add(jeuCartes, BorderLayout.CENTER);
precedent.addActionListener(this);
suivant.addActionListener(this);
leMessage.addActionListener(this);
p.add(precedent);
p.add(suivant);
p.add(leMessage);
add(p, BorderLayout.SOUTH);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300, 250);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
Object obj = e.getSource();
if (obj == precedent) {
gestionnaireDesCartes.previous(jeuCartes);
}
else if (obj == suivant) {
gestionnaireDesCartes.next(jeuCartes);
}
else if (obj == leMessage) {
gestionnaireDesCartes.show(jeuCartes,"message");
}
}
}
class EssaiCartes {
public static void main(String[] arg) {
new Cartes();
}
}
Vous pouvez voir :