// -*- Coding: utf-8 -*-
// Time-stamp: <BackgrdMenu.java 5 déc 2013 13:37:14>
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/**
* Fenêtre avec un menu pour changer la couleur de fond.
* @author O. Carton
* @version 1.0
*/
class BackgrdMenu extends JFrame {
final int width = 300; // Largeur de la fenêtre
final int height = 200; // Hauteur de la fenêtre
// Ajout d'une entrée dans un menu
private void addMenuItem(JMenu menu, String name, final Color c) {
// Création de l'entrée
JMenuItem item = new JMenuItem(name);
// Action associée à l'entrée du menu.
// L'action est réalisée par un object qui implémente l'interface
// ActionListener. Cette interface déclare une méthode
// actionPerformed qui est appelée lorsque l'entrée est choisie par
// par l'utilisateur. On utilise une classe anonyme qui implémente
// l'interface ActionListener.
item.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent event) {
// Changement de la couleur du fond
getContentPane().setBackground(c);
// Actualisation de la fenêtre
repaint();
}
});
// Ajout de l'entrée dans le menu
menu.add(item);
}
public BackgrdMenu () {
// Dimension de la fenêtre
setSize(width, height);
// Titre de la fenêtre
setTitle("Changement de fond par menu");
// Action à faire lorsque la fenêtre est fermée.
setDefaultCloseOperation(EXIT_ON_CLOSE);
// Barre de menu
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
// Ajout du menu
JMenu colorMenu = new JMenu("Couleur");
menuBar.add(colorMenu);
// Choix du menu
addMenuItem(colorMenu, "Rouge", Color.red);
addMenuItem(colorMenu, "Vert", Color.green);
addMenuItem(colorMenu, "Bleu", Color.blue);
addMenuItem(colorMenu, "Magenta", Color.magenta);
addMenuItem(colorMenu, "Jaune", Color.yellow);
addMenuItem(colorMenu, "Orange", Color.orange);
addMenuItem(colorMenu, "Rose", Color.pink);
addMenuItem(colorMenu, "Cyan", Color.cyan);
}
public static void main(String [] args)
{
// Création de la fenêtre
BackgrdMenu bg = new BackgrdMenu();
// Affichage de la fenêtre
bg.setVisible(true);
}
}