import java.awt.Color; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Graphics; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.InputEvent; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.awt.event.KeyEvent; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.ButtonGroup; import javax.swing.JApplet; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JPanel; import javax.swing.JRadioButtonMenuItem; import javax.swing.KeyStroke; @SuppressWarnings("serial") class ArdoiseMenu extends JPanel implements MouseListener { BarreMenu menu; ArdoiseMenu() { setPreferredSize(new Dimension(200, 200)); setBackground(Color.BLUE); setForeground(Color.YELLOW); addMouseListener(this); } public void paintComponent(Graphics g) { super.paintComponent(g); g.fillOval(50, 50, 100, 100); } public void mouseEntered(MouseEvent evt) { menu.requestFocus(); } public void mouseExited(MouseEvent evt) {} public void mouseReleased(MouseEvent evt) {} public void mouseClicked(MouseEvent evt) {} public void mousePressed(MouseEvent evt) {} } // pour le menu deroulant @SuppressWarnings("serial") class MenuCouleur extends JMenu implements ActionListener { ArdoiseMenu ardoise; JMenuItem itemRouge = new JMenuItem("rouge"); JMenuItem itemJaune = new JMenuItem("jaune"); JMenuItem itemVert = new JMenuItem("vert", KeyEvent.VK_V); JRadioButtonMenuItem fondBleu = new JRadioButtonMenuItem("fond bleu", true); JRadioButtonMenuItem fondNoir = new JRadioButtonMenuItem("fond noir", false); JMenu sousMenu ; MenuCouleur(final ArdoiseMenu ardoise) { setText("couleur"); this.ardoise = ardoise; setMnemonic(KeyEvent.VK_C); itemRouge.setMnemonic(KeyEvent.VK_R); itemRouge.addActionListener(this); add(itemRouge); itemJaune.setAccelerator(KeyStroke.getKeyStroke (KeyEvent.VK_J, InputEvent.CTRL_DOWN_MASK)); itemJaune.addActionListener(this); add(itemJaune); itemVert.addActionListener(this); add(itemVert); addSeparator(); sousMenu = new JMenu("fond"); ButtonGroup groupe = new ButtonGroup(); groupe.add(fondBleu); sousMenu.add(fondBleu); groupe.add(fondNoir); sousMenu.add(fondNoir); add(sousMenu); } public void actionPerformed(ActionEvent evt) { Object source = evt.getSource(); if (source == itemRouge) ardoise.setForeground(Color.RED); else if (source == itemJaune) ardoise.setForeground(Color.YELLOW); else if (source == itemVert) ardoise.setForeground(Color.GREEN); } } class BarreMenu extends JMenuBar { MenuCouleur sousMenu; BarreMenu(ArdoiseMenu ardoise) { sousMenu = new MenuCouleur(ardoise); add(sousMenu); } } public class AvecMenuApplet extends JApplet implements ItemListener { BarreMenu barreMenu; ArdoiseMenu ardoise; public void init() { ardoise = new ArdoiseMenu(); barreMenu = new BarreMenu(ardoise); setJMenuBar(barreMenu); ardoise.menu = barreMenu; barreMenu.sousMenu.fondBleu.addItemListener(this); barreMenu.sousMenu.fondNoir.addItemListener(this); setBackground(Color.BLUE); setLayout(new FlowLayout(FlowLayout.CENTER)); add(ardoise); } public void itemStateChanged(ItemEvent evt) { Object source = evt.getSource(); if (source == barreMenu.sousMenu.fondBleu) { ardoise.setBackground(Color.BLUE); setBackground(Color.BLUE); } else if (source == barreMenu.sousMenu.fondNoir) { ardoise.setBackground(Color.BLACK); setBackground(Color.BLACK); } } }