Home Segments Top Top Previous Next

956: Mainline

You can borrow nearly all you need for a popup menu from what you need for a menu bar. In particular, you can retain the fileMenuGeneral and fileMenuHorror menu items.

Now, however, instead of creating a subclass of the JMenu class, you create a subclass of the JPopupMenu class. You no longer need a JMenu instance variable; the JMenuItem instances connect directly to the MoviePopupMenu instance.

import java.awt.*;
import java.util.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class MoviePopupMenu extends JPopupMenu {
 MovieApplication applet;
 private JMenuItem fileMenuGeneral = new JMenuItem("General");
 private JMenuItem fileMenuHorror = new JMenuItem("Horror");
 public MoviePopupMenu (MovieApplication a) {
  applet = a;
  add(fileMenuGeneral);         
  add(fileMenuHorror);          
  LocalActionListener listener = new LocalActionListener(); 
  fileMenuGeneral.addActionListener(listener); 
  fileMenuHorror.addActionListener(listener); 
 } 
 class LocalActionListener implements ActionListener {                  
  public void actionPerformed (ActionEvent e) {                         
   JMenuItem jMenuItem = (JMenuItem)(e.getSource()); 
   if (jMenuItem == fileMenuGeneral) { 
    applet.getMovieData().setMovieVector( 
     MovieAuxiliaries.readMovieFile("general.movies") 
    ); 
   } 
   else if (jMenuItem == fileMenuHorror) { 
    applet.getMovieData().setMovieVector( 
     MovieAuxiliaries.readMovieFile("horror.movies") 
    ); 
}}}}