// Frame for the MenuTest application import javax.swing.JFrame; import javax.swing.JMenuBar; import javax.swing.JMenu; import javax.swing.JMenuItem; import javax.swing.JCheckBoxMenuItem; import javax.swing.JRadioButtonMenuItem; import javax.swing.ButtonGroup; import java.awt.Color; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; public class EventTestFrame extends JFrame { // Constructor public EventTestFrame(String title) { setTitle(title); // Set the window title setDefaultCloseOperation(EXIT_ON_CLOSE); setJMenuBar(menuBar); // Add the menu bar to the window componentMenu = new JMenu("Component"); // Create Component menu formatMenu = new JMenu("Format"); // Create Format menu menuBar.add(componentMenu); // Add the Component menu menuBar.add(formatMenu); // Add the Format menu // Add items to Component menu componentMenu.add(compItem1 = new JCheckBoxMenuItem("Button 1",false)); componentMenu.add(compItem2 = new JCheckBoxMenuItem("Button 2",false)); componentMenu.add(compItem3 = new JCheckBoxMenuItem("Dialog Box",false)); // Add listeners to Component menu items compItem1.addMouseListener(new MouseHandler()); compItem2.addMouseListener(new MouseHandler()); compItem3.addMouseListener(new MouseHandler()); compItem3.addActionListener(new CompItemHandler()); // Add items fo Format menu formatMenu.add(formatItem1 = new JMenuItem("Font")); formatMenu.add(formatItem2 = new JMenu("Color")); // Add items to Color submenu formatItem2.add(redItem = new JRadioButtonMenuItem("Red")); formatItem2.add(greenItem = new JRadioButtonMenuItem("Green")); formatItem2.add(blueItem = new JRadioButtonMenuItem("Blue")); ButtonGroup colors = new ButtonGroup(); colors.add(redItem); colors.add(greenItem); colors.add(blueItem); } private JMenuBar menuBar = new JMenuBar(); // Window menu bar private JMenu componentMenu; private JMenu formatMenu; private JCheckBoxMenuItem compItem1; private JCheckBoxMenuItem compItem2; private JCheckBoxMenuItem compItem3; private JMenuItem formatItem1; private JMenu formatItem2; private JMenu colorMenu; private JRadioButtonMenuItem redItem; private JRadioButtonMenuItem greenItem; private JRadioButtonMenuItem blueItem; // MouseHandler changes color of source when mouse is pressed in its area // Note: this is NOT the same as clicking the mouse in its area class MouseHandler extends MouseAdapter { public void mousePressed(MouseEvent e) { if(((JCheckBoxMenuItem)e.getSource()).getState()) ((JCheckBoxMenuItem)e.getSource()).setBackground(Color.WHITE); else ((JCheckBoxMenuItem)e.getSource()).setBackground(Color.YELLOW); } } // CompItemHandler prints message class CompItemHandler implements ActionListener { public void actionPerformed(ActionEvent e) { Object source = e.getSource(); String mess = ((JCheckBoxMenuItem)source).getText(); System.out.println(mess); } } }