Mega Code Archive

 
Categories / Java / Swing JFC
 

Creating popup menus with Swing

// : c14:Popup.java // Creating popup menus with Swing. // <applet code=Popup width=300 height=200></applet> // From 'Thinking in Java, 3rd ed.' (c) Bruce Eckel 2002 // www.BruceEckel.com. See copyright notice in CopyRight.txt. import java.awt.Container; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.JApplet; import javax.swing.JFrame; import javax.swing.JMenuItem; import javax.swing.JPopupMenu; import javax.swing.JTextField; public class Popup extends JApplet {   private JPopupMenu popup = new JPopupMenu();   private JTextField t = new JTextField(10);   public void init() {     Container cp = getContentPane();     cp.setLayout(new FlowLayout());     cp.add(t);     ActionListener al = new ActionListener() {       public void actionPerformed(ActionEvent e) {         t.setText(((JMenuItem) e.getSource()).getText());       }     };     JMenuItem m = new JMenuItem("Hither");     m.addActionListener(al);     popup.add(m);     m = new JMenuItem("Yon");     m.addActionListener(al);     popup.add(m);     m = new JMenuItem("Afar");     m.addActionListener(al);     popup.add(m);     popup.addSeparator();     m = new JMenuItem("Stay Here");     m.addActionListener(al);     popup.add(m);     PopupListener pl = new PopupListener();     addMouseListener(pl);     t.addMouseListener(pl);   }   class PopupListener extends MouseAdapter {     public void mousePressed(MouseEvent e) {       maybeShowPopup(e);     }     public void mouseReleased(MouseEvent e) {       maybeShowPopup(e);     }     private void maybeShowPopup(MouseEvent e) {       if (e.isPopupTrigger())         popup.show(((JApplet) e.getComponent()).getContentPane(), e             .getX(), e.getY());     }   }   public static void main(String[] args) {     run(new Popup(), 300, 200);   }   public static void run(JApplet applet, int width, int height) {     JFrame frame = new JFrame();     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);     frame.getContentPane().add(applet);     frame.setSize(width, height);     applet.init();     applet.start();     frame.setVisible(true);   } } ///:~