import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Main extends JFrame implements ActionListener { // Remember them in ivars for use in callback private MyModel myModel; private MyCanvas canvas; public static void main (String [] args) { java.awt.EventQueue.invokeLater (new Runnable() { public void run() { new Main (); } }); } public Main () { // Window setup setLocation (100, 100); setSize (300, 300); setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); Container content = getContentPane(); // Holds our data myModel = new MyModel ("Waiting for menu item"); // Put canvas in our window canvas = new MyCanvas (myModel); content.add (canvas); // Add a menu to our window JMenu menu = new JMenu ("File"); // And its items JMenuItem item = new JMenuItem ("Open"); menu.add (item); item.addActionListener (this); item = new JMenuItem ("Save"); menu.add (item); item.addActionListener (this); item = new JMenuItem ("Quit"); menu.add (item); item.addActionListener (this); // Add menu to a menu bar JMenuBar menuBar = new JMenuBar (); menuBar.add (menu); // Another menu JMenu menu2 = new JMenu ("Edit"); // Some items for menu2 item = new JMenuItem ("Cut"); menu2.add (item); item.addActionListener (this); item = new JMenuItem ("Copy"); menu2.add (item); item.addActionListener (this); item = new JMenuItem ("Paste"); menu2.add (item); item.addActionListener (this); // Add menu2 to the menu bar menuBar.add (menu2); // Install menu bar in our window setJMenuBar (menuBar); setVisible (true); } // ActionListener method for all the pull-down menu items public void actionPerformed (ActionEvent e) { if (e.getActionCommand().equals ("Quit")) { System.exit (0); } else { // Change the text myModel.setText ("Menu item: " + e.getActionCommand()); // Then trigger a redraw canvas.repaint (); } } }