Use PopupsTag(s): AWT
[JDK1.1]
import java.awt.*; import java.awt.event.*; import java.util.Hashtable; public class PopupTest extends Frame implements ActionListener, MouseListener { Hashtable popupTable = new Hashtable(); public PopupTest() { /* ** regular menu */ Menu m = new Menu("file"); MenuItem item = new MenuItem("file-1"); item.addActionListener(this); m.add(item); item = new MenuItem("file-2"); m.add(item); MenuBar mb = new MenuBar(); mb.add(m); setMenuBar(mb); setSize(100, 100); setLayout(new BorderLayout()); /* ** label with a popup */ Label l = new Label("label"); addPopup(l, "label"); add(l, "North"); /* ** panel with popup */ Panel p = new Panel(); p.setBackground(new Color(0).red); addPopup(p, "Panel"); add(p, "Center"); /* ** button with popup */ Button b = new Button("button"); addPopup(b, "button"); add(b, "South"); addWindowListener (new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } } ); setVisible(true); } public void actionPerformed(ActionEvent e) { /* ** handle actions related to popup */ System.out.println("actionPerformed, event=" + e ); System.out.println(" command=" + e.getActionCommand()); System.out.println(" param=" + e.paramString()); System.out.println(" source=" + e.getSource()); } public void mouseClicked (MouseEvent e) { } public void mouseEntered (MouseEvent e) { } public void mouseExited (MouseEvent e) { } public void mousePressed (MouseEvent e) { mouseAction(e); } public void mouseReleased (MouseEvent e) { mouseAction(e); } void mouseAction (MouseEvent e) { /* ** determine if we have to show a Popup */ Component c = e.getComponent(); if (e.isPopupTrigger()) { PopupMenu pm = getHash(c); pm.show(c, c.getSize().width/2, c.getSize().height/2); } } /* ** initialize a Popup for a particular Component */ void addPopup(Component c, String name) { PopupMenu pm = new PopupMenu(); MenuItem mi1 = new MenuItem(name + "-1"); pm.add(mi1); mi1.addActionListener(this); MenuItem mi2 = new MenuItem(name + "-2"); pm.add(mi2); mi2.addActionListener(this); setHash(c, pm); c.add(pm); c.addMouseListener(this); } void setHash(Component c, PopupMenu p) { /* ** associate a Component with a particular Popup */ popupTable.put(c, p); } PopupMenu getHash(Component c) { /* ** return a Popup associated with a particular Component */ return (PopupMenu)(popupTable.get(c)); } public static void main (String argv[]) { new PopupTest(); } }
mail_outline
Send comment, question or suggestion to howto@rgagnon.com
Send comment, question or suggestion to howto@rgagnon.com