Popup menu on menuItem

I want to show the popupmenu when users do the right click on the menuitem to do something like the mozilla or internet explorer Favorites menu which can be do right click to show the popup.
I tried this, but i always have the following problems:
1) I open the popupMenu with the popup.show( jmenuitem, mouseEvent.getX(), mouseEvent.getY())
I got the error : java.awt.IllegalComponentStateException: component must be showing on the screen to determine its location
private JMenuItem getAddMenuItem() {
          if (addMenuItem == null) {
               addMenuItem = new JMenuItem();
               addMenuItem.setText(" Favourites    ");
               addMenuItem.addMouseListener(new MouseAdapter() {
                    public void mousePressed(java.awt.event.MouseEvent e){
                         System.out.println("Mouse Pressed: "+e);
                         if(SwingUtilities.isRightMouseButton(e)){
                               System.out.println("Right mouse action");
                         if(SwingUtilities.isLeftMouseButton(e)){
                              System.out.println("Left Mouse action");
                                               //Here i will open a dialog for the user
                                 public void mouseReleased(java.awt.event.MouseEvent e) {
                         System.out.println("Mouse Released: "+e);
                         if(SwingUtilities.isRightMouseButton(e)){
                               System.out.println("Right mouse action");
                               addMenuItem.add(getPopUpMenu());
                               if (popUpMenu.isPopupTrigger(e)){
                                    System.out.println("Triggered2");
                                    popUpMenu.show(e.getComponent(), e.getX(), e.getY());
                         if(SwingUtilities.isLeftMouseButton(e)){
                              System.out.println("Left Mouse action");
               });     so how can i make the menuItem available on the screen to add the popup menu to it?

I didn't see your code but a meunitem on a menu can be another menu. I think that shoud be enough for your requirement.

Similar Messages

  • JPopupMenu with JInternalFrame, popup menu doesn't work

    hi, i have this problem, as shown in the sample code at the end of this post.. basically, i have a table, and i added a JPopupMenu onto the table.. the popup menu works well when running the table class, though, when i call the table class in a JInternalFrame environment, the popup menu won't work.. anyone know why?
    ///Basic sample table code, when run this alone, the popup menu will work
    import java.util.*;
    import java.awt.event.*;
    import javax.swing.*;
    public class TableBasic extends JPanel
         private JTable table;
         public TableBasic()
              String[] columnNames = { "Date", "String", "Integer", "Boolean" };
              Object[][] data =
                   {  { new Date(), "A", new Integer(1), Boolean.TRUE },
                        { new Date(), "B", new Integer(2), Boolean.FALSE },
                        { new Date(), "C", new Integer(9), Boolean.TRUE },
                        { new Date(), "D", new Integer(4), Boolean.FALSE}
              table = new JTable(data, columnNames)
                   //Returning the Class of each column will allow different
                   //renderers to be used based on Class
                   public Class getColumnClass(int column)
                        return getValueAt(0, column).getClass();
              table.setPreferredScrollableViewportSize(table.getPreferredSize());
              JScrollPane scrollPane = new JScrollPane(table);
              add(scrollPane);
         public void createPopupMenu()
              JMenuItem menuItem;
              //Create the popup menu.
              JPopupMenu popup = new JPopupMenu();
              menuItem = new JMenuItem("A popup menu item");
              //menuItem.addActionListener(this);
              popup.add(menuItem);
              menuItem = new JMenuItem("Another popup menu item");
              //menuItem.addActionListener(this);
              popup.add(menuItem);
              //Add listener to the text area so the popup menu can come up.
              MouseListener popupListener = new PopupListener(popup);
              table.addMouseListener(popupListener);
         public static void main(String[] args)
              JFrame frame = new JFrame();
              TableBasic table = new TableBasic();
              table.createPopupMenu();
              frame.setContentPane(table);
              frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
              frame.pack();
              //frame.setLocationRelativeTo(null);
              frame.setVisible(true);
         class PopupListener extends MouseAdapter
              JPopupMenu popup;
              PopupListener(JPopupMenu popupMenu)
                   popup = popupMenu;
              public void mousePressed(MouseEvent e)
                   maybeShowPopup(e);
              public void mouseReleased(MouseEvent e)
                   maybeShowPopup(e);
              private void maybeShowPopup(MouseEvent e)
                   if (e.isPopupTrigger())
                        popup.show(e.getComponent(), e.getX(), e.getY());
    ///when integrate the previous table into here, popup menu won't work
    import java.awt.*;
    import javax.swing.*;
    public class InternalFrameBasic
         extends JFrame
         //implements ActionListener
         private JDesktopPane desktop;
         private JInternalFrame menuWindow;
         public static final int desktopWidth = 800;
         public static final int desktopHeight = 700;
         public InternalFrameBasic(String title)
              super(title);
              //Set up the GUI.
              desktop = new JDesktopPane();
              desktop.putClientProperty("JDesktopPane.dragMode", "outline");
              //Because we use pack, it's not enough to call setSize.
              //We must set the desktop's preferred size.
              desktop.setPreferredSize(new Dimension(desktopWidth, desktopHeight));
              setContentPane(desktop);
              createMenuWindow();
              desktop.add(menuWindow); //DON'T FORGET THIS!!!
              Dimension displaySize = menuWindow.getSize();
              menuWindow.setSize(desktopWidth, displaySize.height);
         private void createMenuWindow()
              menuWindow =
                             new JInternalFrame("Event Watcher", true, //resizable
                                                                                                   true, //closable
                                                                                                   false, //not maximizable
                                                                                                   true); //iconifiable
              menuWindow.setContentPane(new TableBasic());
              menuWindow.pack();
              menuWindow.setVisible(true);
          * Create the GUI and show it.  For thread safety,
          * this method should be invoked from the
          * event-dispatching thread.
         private static void createAndShowGUI()
              //Make sure we have nice window decorations.
              //JFrame.setDefaultLookAndFeelDecorated(true);
              //Create and set up the window.
              JFrame frame = new InternalFrameBasic("Example Internal Frame");
              frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
              //Display the window.
              frame.pack();
              frame.setVisible(true);
         public static void main(String[] args)
              //Schedule a job for the event-dispatching thread:
              //creating and showing this application's GUI.
              javax.swing.SwingUtilities.invokeLater(new Runnable()
                   public void run()
                        createAndShowGUI();
    }

    table.createPopupMenu();The above line should not be in the main method. It should be in the constructor class of TableBasic.
    You never execute that method in your InternalFrameBasic class to the mouse listener never gets added to the table.

  • How to activate a menuitem on popup menu?

    hello there
    i've made a popup menu with to menu items
    PopupMenu popup = new PopupMenu();         
                 MenuItem defaultItem2 = new MenuItem("Restore");
                  MenuItem defaultItem = new MenuItem("Exit");
                  popup.add(defaultItem2);
                 popup.add(defaultItem);  and i've put the popup menu on a tray
                               class TrayActionListener implements ActionListener {
            public void actionPerformed(ActionEvent e) {
               trayIcon.getPopupMenu();
        };and i want if the user selects the Exit menuitem the program is closed
    and if he chooses restore the frame is restored from the system tray
    how to do these two action?

    thanks dwg but i have a little problem here
    i have 2 classes one for the systemtray and other for actions on it
    each class is independent
          public void setupSystemTray() {
            if (SystemTray.isSupported()) {
                SystemTray tray = SystemTray.getSystemTray();
                Image image = Toolkit.getDefaultToolkit().getImage("D:\\Other\\JAVA\\Icons\\shutdown.png");
                 PopupMenu popup = new PopupMenu();         
                 MenuItem defaultItem2 = new MenuItem("Restore");
                  MenuItem defaultItem = new MenuItem("Exit");
                   defaultItem.addActionListener(this);
                  popup.add(defaultItem2);
                 popup.add(defaultItem);   
                trayIcon = new TrayIcon(image, "JShutdown Timer",popup);
                trayIcon.setImageAutoSize(true);
                trayIcon.addActionListener(new TrayActionListener());
                try {
                    tray.add(trayIcon);
                } catch (AWTException e) {
                    System.err.println("TrayIcon could not be added.");
                                           class TrayActionListener implements ActionListener {
            public void actionPerformed(ActionEvent e) {
               trayIcon.getPopupMenu();
             if(e.getSource()==defaultItem)
                  System.exit(0);
        };and i want if the user chooses the exit menuitem the program exits
    so i write
    if(e.getSource()==defaultItem)
                  System.exit(0);
             }in the second class the IDE didn't recognize the variable defaultItem
    and it gave me error couldn't find simple variable
    how to fix that?

  • Mouse icon issue/question in popup menu creaed in dreamweaver

    I have created a popup menu in dreamweaver and everything is fine except the popup menu items do not show a hand icon when mouse is over. It is an arrow or  a cursor blink. How can I make it so that it is a hand icon? Thanks.

    OK, here it is.
    Code from HTML created:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Untitled Document</title>
    <script language="JavaScript">
    <!--
    function mmLoadMenus() {
      if (window.mm_menu_0817145255_0) return;
      window.mm_menu_0817145255_0 = new Menu("root",82,18,"Arial, Helvetica, sans-serif",12,"#FCFBFA","#000000","#666666","#999999","left","middle",3,0,1000,-5,7,true ,true,true,0,true,true);
      mm_menu_0817145255_0.addMenuItem("CREAM","location='#'");
      mm_menu_0817145255_0.addMenuItem("BUTTER","location='#'");
       mm_menu_0817145255_0.fontWeight="bold";
       mm_menu_0817145255_0.hideOnMouseOut=true;
       mm_menu_0817145255_0.bgColor='#FF6600';
       mm_menu_0817145255_0.menuBorder=0;
       mm_menu_0817145255_0.menuLiteBgColor='#FF9900';
       mm_menu_0817145255_0.menuBorderBgColor='#FF9900';
    mm_menu_0817145255_0.onmouseover='foo.jpg';
    mm_menu_0817145255_0.writeMenus();
    } // mmLoadMenus()
    //-->
    </script>
    <script language="JavaScript" src="mm_menu.js"></script>
    </head>
    <body>
    <script language="JavaScript1.2">mmLoadMenus();</script>
    <a href="http://www.msn.com" name="link1" title="COOKIES" target="_self" id="link1" onmouseover="MM_showMenu(window.mm_menu_0817145255_0,0,19,null,'link1')" onmouseout="MM_startTimeout();">COOKIES</a>
    </body>
    </html>
    The code below is from the js file:
    * mm_menu 20MAR2002 Version 6.0
    * Andy Finnell, March 2002
    * Copyright (c) 2000-2002 Macromedia, Inc.
    * based on menu.js
    * by gary smith, July 1997
    * Copyright (c) 1997-1999 Netscape Communications Corp.
    * Netscape grants you a royalty free license to use or modify this
    * software provided that this copyright notice appears on all copies.
    * This software is provided "AS IS," without a warranty of any kind.
    function Menu(label, mw, mh, fnt, fs, fclr, fhclr, bg, bgh, halgn, valgn, pad, space, to, sx, sy, srel, opq, vert, idt, aw, ah)
    this.version = "020320 [Menu; mm_menu.js]";
    this.type = "Menu";
    this.menuWidth = mw;
    this.menuItemHeight = mh;
    this.fontSize = fs;
    this.fontWeight = "plain";
    this.fontFamily = fnt;
    this.fontColor = fclr;
    this.fontColorHilite = fhclr;
    this.bgColor = "#555555";
    this.menuBorder = 1;
    this.menuBgOpaque=opq;
    this.menuItemBorder = 1;
    this.menuItemIndent = idt;
    this.menuItemBgColor = bg;
    this.menuItemVAlign = valgn;
    this.menuItemHAlign = halgn;
    this.menuItemPadding = pad;
    this.menuItemSpacing = space;
    this.menuLiteBgColor = "#ffffff";
    this.menuBorderBgColor = "#777777";
    this.menuHiliteBgColor = bgh;
    this.menuContainerBgColor = "#cccccc";
    this.childMenuIcon = "arrows.gif";
    this.submenuXOffset = sx;
    this.submenuYOffset = sy;
    this.submenuRelativeToItem = srel;
    this.vertical = vert;
    this.items = new Array();
    this.actions = new Array();
    this.childMenus = new Array();
    this.hideOnMouseOut = true;
    this.hideTimeout = to;
    this.addMenuItem = addMenuItem;
    this.writeMenus = writeMenus;
    this.MM_showMenu = MM_showMenu;
    this.onMenuItemOver = onMenuItemOver;
    this.onMenuItemAction = onMenuItemAction;
    this.hideMenu = hideMenu;
    this.hideChildMenu = hideChildMenu;
    if (!window.menus) window.menus = new Array();
    this.label = " " + label;
    window.menus[this.label] = this;
    window.menus[window.menus.length] = this;
    if (!window.activeMenus) window.activeMenus = new Array();
    function addMenuItem(label, action) {
    this.items[this.items.length] = label;
    this.actions[this.actions.length] = action;
    function FIND(item) {
    if( window.mmIsOpera ) return(document.getElementById(item));
    if (document.all) return(document.all[item]);
    if (document.getElementById) return(document.getElementById(item));
    return(false);
    function writeMenus(container) {
    if (window.triedToWriteMenus) return;
    var agt = navigator.userAgent.toLowerCase();
    window.mmIsOpera = agt.indexOf("opera") != -1;
    if (!container && document.layers) {
      window.delayWriteMenus = this.writeMenus;
      var timer = setTimeout('delayWriteMenus()', 500);
      container = new Layer(100);
      clearTimeout(timer);
    } else if (document.all || document.hasChildNodes || window.mmIsOpera) {
      document.writeln('<span id="menuContainer"></span>');
      container = FIND("menuContainer");
    window.mmHideMenuTimer = null;
    if (!container) return;
    window.triedToWriteMenus = true;
    container.isContainer = true;
    container.menus = new Array();
    for (var i=0; i<window.menus.length; i++)
      container.menus[i] = window.menus[i];
    window.menus.length = 0;
    var countMenus = 0;
    var countItems = 0;
    var top = 0;
    var content = '';
    var lrs = false;
    var theStat = "";
    var tsc = 0;
    if (document.layers) lrs = true;
    for (var i=0; i<container.menus.length; i++, countMenus++) {
      var menu = container.menus[i];
      if (menu.bgImageUp || !menu.menuBgOpaque) {
       menu.menuBorder = 0;
       menu.menuItemBorder = 0;
      if (lrs) {
       var menuLayer = new Layer(100, container);
       var lite = new Layer(100, menuLayer);
       lite.top = menu.menuBorder;
       lite.left = menu.menuBorder;
       var body = new Layer(100, lite);
       body.top = menu.menuBorder;
       body.left = menu.menuBorder;
      } else {
       content += ''+
       '<div id="menuLayer'+ countMenus +'" style="position:absolute;z-index:1;left:10px;top:'+ (i * 100) +'px;visibility:hidden;color:' +  menu.menuBorderBgColor + ';">\n'+
       '  <div id="menuLite'+ countMenus +'" style="position:absolute;z-index:1;left:'+ menu.menuBorder +'px;top:'+ menu.menuBorder +'px;visibility:hide;" onmouseout="mouseoutMenu();">\n'+
       '  <div id="menuFg'+ countMenus +'" style="position:absolute;left:'+ menu.menuBorder +'px;top:'+ menu.menuBorder +'px;visibility:hide;">\n'+
      var x=i;
      for (var i=0; i<menu.items.length; i++) {
       var item = menu.items[i];
       var childMenu = false;
       var defaultHeight = menu.fontSize+2*menu.menuItemPadding;
       if (item.label) {
        item = item.label;
        childMenu = true;
       menu.menuItemHeight = menu.menuItemHeight || defaultHeight;
       var itemProps = '';
       if( menu.fontFamily != '' ) itemProps += 'font-family:' + menu.fontFamily +';';
       itemProps += 'font-weight:' + menu.fontWeight + ';fontSize:' + menu.fontSize + 'px;';
       if (menu.fontStyle) itemProps += 'font-style:' + menu.fontStyle + ';';
       if (document.all || window.mmIsOpera)
        itemProps += 'font-size:' + menu.fontSize + 'px;" onmouseover="onMenuItemOver(null,this);" onclick="onMenuItemAction(null,this);';
       else if (!document.layers) {
        itemProps += 'font-size:' + menu.fontSize + 'px;';
       var l;
       if (lrs) {
        var lw = menu.menuWidth;
        if( menu.menuItemHAlign == 'right' ) lw -= menu.menuItemPadding;
        l = new Layer(lw,body);
       var itemLeft = 0;
       var itemTop = i*menu.menuItemHeight;
       if( !menu.vertical ) {
        itemLeft = i*menu.menuWidth;
        itemTop = 0;
       var dTag = '<div id="menuItem'+ countItems +'" style="position:absolute;left:' + itemLeft + 'px;top:'+ itemTop +'px;'+ itemProps +'">';
       var dClose = '</div>'
       if (menu.bgImageUp) dTag = '<div id="menuItem'+ countItems +'" style="background:url('+menu.bgImageUp+');position:absolute;left:' + itemLeft + 'px;top:'+ itemTop +'px;'+ itemProps +'">';
       var left = 0, top = 0, right = 0, bottom = 0;
       left = 1 + menu.menuItemPadding + menu.menuItemIndent;
       right = left + menu.menuWidth - 2*menu.menuItemPadding - menu.menuItemIndent;
       if( menu.menuItemVAlign == 'top' ) top = menu.menuItemPadding;
       if( menu.menuItemVAlign == 'bottom' ) top = menu.menuItemHeight-menu.fontSize-1-menu.menuItemPadding;
       if( menu.menuItemVAlign == 'middle' ) top = ((menu.menuItemHeight/2)-(menu.fontSize/2)-1);
       bottom = menu.menuItemHeight - 2*menu.menuItemPadding;
       var textProps = 'position:absolute;left:' + left + 'px;top:' + top + 'px;';
       if (lrs) {
        textProps +=itemProps + 'right:' + right + ';bottom:' + bottom + ';';
        dTag = "";
        dClose = "";
       if(document.all && !window.mmIsOpera) {
        item = '<div align="' + menu.menuItemHAlign + '">' + item + '</div>';
       } else if (lrs) {
        item = '<div style="text-align:' + menu.menuItemHAlign + ';">' + item + '</div>';
       } else {
        var hitem = null;
        if( menu.menuItemHAlign != 'left' ) {
         if(window.mmIsOpera) {
          var operaWidth = menu.menuItemHAlign == 'center' ? -(menu.menuWidth-2*menu.menuItemPadding) : (menu.menuWidth-6*menu.menuItemPadding);
          hitem = '<div id="menuItemHilite' + countItems + 'Shim" style="position:absolute;top:1px;left:' + menu.menuItemPadding + 'px;width:' + operaWidth + 'px;text-align:'
           + menu.menuItemHAlign + ';visibility:visible;">' + item + '</div>';
          item = '<div id="menuItemText' + countItems + 'Shim" style="position:absolute;top:1px;left:' + menu.menuItemPadding + 'px;width:' + operaWidth + 'px;text-align:'
           + menu.menuItemHAlign + ';visibility:visible;">' + item + '</div>';
         } else {
          hitem = '<div id="menuItemHilite' + countItems + 'Shim" style="position:absolute;top:1px;left:1px;right:-' + (left+menu.menuWidth-3*menu.menuItemPadding) + 'px;text-align:'
           + menu.menuItemHAlign + ';visibility:visible;">' + item + '</div>';
          item = '<div id="menuItemText' + countItems + 'Shim" style="position:absolute;top:1px;left:1px;right:-' + (left+menu.menuWidth-3*menu.menuItemPadding) + 'px;text-align:'
           + menu.menuItemHAlign + ';visibility:visible;">' + item + '</div>';
        } else hitem = null;
       if(document.all && !window.mmIsOpera) item = '<div id="menuItemShim' + countItems + '" style="position:absolute;left:0px;top:0px;">' + item + '</div>';
       var dText = '<div id="menuItemText'+ countItems +'" style="' + textProps + 'color:'+ menu.fontColor +';">'+ item +'&nbsp</div>\n'
          + '<div id="menuItemHilite'+ countItems +'" style="' + textProps + 'color:'+ menu.fontColorHilite +';visibility:hidden;">'
          + (hitem||item) +'&nbsp</div>';
       if (childMenu) content += ( dTag + dText + '<div id="childMenu'+ countItems +'" style="position:absolute;left:0px;top:3px;"><img src="'+ menu.childMenuIcon +'"></div>\n' + dClose);
       else content += ( dTag + dText + dClose);
       if (lrs) {
        l.document.open("text/html");
        l.document.writeln(content);
        l.document.close();
        content = '';
        theStat += "-";
        tsc++;
        if (tsc > 50) {
         tsc = 0;
         theStat = "";
        status = theStat;
       countItems++; 
      if (lrs) {
       var focusItem = new Layer(100, body);
       focusItem.visiblity="hidden";
       focusItem.document.open("text/html");
       focusItem.document.writeln(" ");
       focusItem.document.close();
      } else {
        content += '   <div id="focusItem'+ countMenus +'" style="position:absolute;left:0px;top:0px;visibility:hide;" onclick="onMenuItemAction(null,this);"> </div>\n';
        content += '   </div>\n  </div>\n</div>\n';
      i=x;
    if (document.layers) { 
      container.clip.width = window.innerWidth;
      container.clip.height = window.innerHeight;
      container.onmouseout = mouseoutMenu;
      container.menuContainerBgColor = this.menuContainerBgColor;
      for (var i=0; i<container.document.layers.length; i++) {
       proto = container.menus[i];
       var menu = container.document.layers[i];
       container.menus[i].menuLayer = menu;
       container.menus[i].menuLayer.Menu = container.menus[i];
       container.menus[i].menuLayer.Menu.container = container;
       var body = menu.document.layers[0].document.layers[0];
       body.clip.width = proto.menuWidth || body.clip.width;
       body.clip.height = proto.menuHeight || body.clip.height;
       for (var n=0; n<body.document.layers.length-1; n++) {
        var l = body.document.layers[n];
        l.Menu = container.menus[i];
        l.menuHiliteBgColor = proto.menuHiliteBgColor;
        l.document.bgColor = proto.menuItemBgColor;
        l.saveColor = proto.menuItemBgColor;
        l.onmouseover = proto.onMenuItemOver;
        l.onclick = proto.onMenuItemAction;
        l.mmaction = container.menus[i].actions[n];
        l.focusItem = body.document.layers[body.document.layers.length-1];
        l.clip.width = proto.menuWidth || body.clip.width;
        l.clip.height = proto.menuItemHeight || l.clip.height;
        if (n>0) {
         if( l.Menu.vertical ) l.top = body.document.layers[n-1].top + body.document.layers[n-1].clip.height + proto.menuItemBorder + proto.menuItemSpacing;
         else l.left = body.document.layers[n-1].left + body.document.layers[n-1].clip.width + proto.menuItemBorder + proto.menuItemSpacing;
        l.hilite = l.document.layers[1];
        if (proto.bgImageUp) l.background.src = proto.bgImageUp;
        l.document.layers[1].isHilite = true;
        if (l.document.layers.length > 2) {
         l.childMenu = container.menus[i].items[n].menuLayer;
         l.document.layers[2].left = l.clip.width -13;
         l.document.layers[2].top = (l.clip.height / 2) -4;
         l.document.layers[2].clip.left += 3;
         l.Menu.childMenus[l.Menu.childMenus.length] = l.childMenu;
       if( proto.menuBgOpaque ) body.document.bgColor = proto.bgColor;
       if( proto.vertical ) {
        body.clip.width  = l.clip.width +proto.menuBorder;
        body.clip.height = l.top + l.clip.height +proto.menuBorder;
       } else {
        body.clip.height  = l.clip.height +proto.menuBorder;
        body.clip.width = l.left + l.clip.width  +proto.menuBorder;
        if( body.clip.width > window.innerWidth ) body.clip.width = window.innerWidth;
       var focusItem = body.document.layers[n];
       focusItem.clip.width = body.clip.width;
       focusItem.Menu = l.Menu;
       focusItem.top = -30;
                focusItem.captureEvents(Event.MOUSEDOWN);
                focusItem.onmousedown = onMenuItemDown;
       if( proto.menuBgOpaque ) menu.document.bgColor = proto.menuBorderBgColor;
       var lite = menu.document.layers[0];
       if( proto.menuBgOpaque ) lite.document.bgColor = proto.menuLiteBgColor;
       lite.clip.width = body.clip.width +1;
       lite.clip.height = body.clip.height +1;
       menu.clip.width = body.clip.width + (proto.menuBorder * 3) ;
       menu.clip.height = body.clip.height + (proto.menuBorder * 3);
    } else {
      if ((!document.all) && (container.hasChildNodes) && !window.mmIsOpera) {
       container.innerHTML=content;
      } else {
       container.document.open("text/html");
       container.document.writeln(content);
       container.document.close();
      if (!FIND("menuLayer0")) return;
      var menuCount = 0;
      for (var x=0; x<container.menus.length; x++) {
       var menuLayer = FIND("menuLayer" + x);
       container.menus[x].menuLayer = "menuLayer" + x;
       menuLayer.Menu = container.menus[x];
       menuLayer.Menu.container = "menuLayer" + x;
       menuLayer.style.zindex = 1;
          var s = menuLayer.style;
       s.pixeltop = -300;
       s.pixelleft = -300;
       s.top = '-300px';
       s.left = '-300px';
       var menu = container.menus[x];
       menu.menuItemWidth = menu.menuWidth || menu.menuIEWidth || 140;
       if( menu.menuBgOpaque ) menuLayer.style.backgroundColor = menu.menuBorderBgColor;
       var top = 0;
       var left = 0;
       menu.menuItemLayers = new Array();
       for (var i=0; i<container.menus[x].items.length; i++) {
        var l = FIND("menuItem" + menuCount);
        l.Menu = container.menus[x];
        l.Menu.menuItemLayers[l.Menu.menuItemLayers.length] = l;
        if (l.addEventListener || window.mmIsOpera) {
         l.style.width = menu.menuItemWidth + 'px';
         l.style.height = menu.menuItemHeight + 'px';
         l.style.pixelWidth = menu.menuItemWidth;
         l.style.pixelHeight = menu.menuItemHeight;
         l.style.top = top + 'px';
         l.style.left = left + 'px';
         if(l.addEventListener) {
          l.addEventListener("mouseover", onMenuItemOver, false);
          l.addEventListener("click", onMenuItemAction, false);
          l.addEventListener("mouseout", mouseoutMenu, false);
         if( menu.menuItemHAlign != 'left' ) {
          l.hiliteShim = FIND("menuItemHilite" + menuCount + "Shim");
          l.hiliteShim.style.visibility = "inherit";
          l.textShim = FIND("menuItemText" + menuCount + "Shim");
          l.hiliteShim.style.pixelWidth = menu.menuItemWidth - 2*menu.menuItemPadding - menu.menuItemIndent;
          l.hiliteShim.style.width = l.hiliteShim.style.pixelWidth;
          l.textShim.style.pixelWidth = menu.menuItemWidth - 2*menu.menuItemPadding - menu.menuItemIndent;
          l.textShim.style.width = l.textShim.style.pixelWidth;
        } else {
         l.style.pixelWidth = menu.menuItemWidth;
         l.style.pixelHeight = menu.menuItemHeight;
         l.style.pixelTop = top;
         l.style.pixelLeft = left;
         if( menu.menuItemHAlign != 'left' ) {
          var shim = FIND("menuItemShim" + menuCount);
          shim[0].style.pixelWidth = menu.menuItemWidth - 2*menu.menuItemPadding - menu.menuItemIndent;
          shim[1].style.pixelWidth = menu.menuItemWidth - 2*menu.menuItemPadding - menu.menuItemIndent;
          shim[0].style.width = shim[0].style.pixelWidth + 'px';
          shim[1].style.width = shim[1].style.pixelWidth + 'px';
        if( menu.vertical ) top = top + menu.menuItemHeight+menu.menuItemBorder+menu.menuItemSpacing;
        else left = left + menu.menuItemWidth+menu.menuItemBorder+menu.menuItemSpacing;
        l.style.fontSize = menu.fontSize + 'px';
        l.style.backgroundColor = menu.menuItemBgColor;
        l.style.visibility = "inherit";
        l.saveColor = menu.menuItemBgColor;
        l.menuHiliteBgColor = menu.menuHiliteBgColor;
        l.mmaction = container.menus[x].actions[i];
        l.hilite = FIND("menuItemHilite" + menuCount);
        l.focusItem = FIND("focusItem" + x);
        l.focusItem.style.pixelTop = -30;
        l.focusItem.style.top = '-30px';
        var childItem = FIND("childMenu" + menuCount);
        if (childItem) {
         l.childMenu = container.menus[x].items[i].menuLayer;
         childItem.style.pixelLeft = menu.menuItemWidth -11;
         childItem.style.left = childItem.style.pixelLeft + 'px';
         childItem.style.pixelTop = (menu.menuItemHeight /2) -4;
         childItem.style.top = childItem.style.pixelTop + 'px';
         l.Menu.childMenus[l.Menu.childMenus.length] = l.childMenu;
        l.style.cursor = "hand";
        menuCount++;
       if( menu.vertical ) {
        menu.menuHeight = top-1-menu.menuItemSpacing;
        menu.menuWidth = menu.menuItemWidth;
       } else {
        menu.menuHeight = menu.menuItemHeight;
        menu.menuWidth = left-1-menu.menuItemSpacing;
       var lite = FIND("menuLite" + x);
       var s = lite.style;
       s.pixelHeight = menu.menuHeight +(menu.menuBorder * 2);
       s.height = s.pixelHeight + 'px';
       s.pixelWidth = menu.menuWidth + (menu.menuBorder * 2);
       s.width = s.pixelWidth + 'px';
       if( menu.menuBgOpaque ) s.backgroundColor = menu.menuLiteBgColor;
       var body = FIND("menuFg" + x);
       s = body.style;
       s.pixelHeight = menu.menuHeight + menu.menuBorder;
       s.height = s.pixelHeight + 'px';
       s.pixelWidth = menu.menuWidth + menu.menuBorder;
       s.width = s.pixelWidth + 'px';
       if( menu.menuBgOpaque ) s.backgroundColor = menu.bgColor;
       s = menuLayer.style;
       s.pixelWidth  = menu.menuWidth + (menu.menuBorder * 4);
       s.width = s.pixelWidth + 'px';
       s.pixelHeight  = menu.menuHeight+(menu.menuBorder*4);
       s.height = s.pixelHeight + 'px';
    if (document.captureEvents) document.captureEvents(Event.MOUSEUP);
    if (document.addEventListener) document.addEventListener("mouseup", onMenuItemOver, false);
    if (document.layers && window.innerWidth) {
      window.onresize = NS4resize;
      window.NS4sIW = window.innerWidth;
      window.NS4sIH = window.innerHeight;
      setTimeout("NS4resize()",500);
    document.onmouseup = mouseupMenu;
    window.mmWroteMenu = true;
    status = "";
    function NS4resize() {
    if (NS4sIW != window.innerWidth || NS4sIH != window.innerHeight) window.location.reload();
    function onMenuItemOver(e, l) {
    MM_clearTimeout();
    l = l || this;
    var a = window.ActiveMenuItem;
    if (document.layers) {
      if (a) {
       a.document.bgColor = a.saveColor;
       if (a.hilite) a.hilite.visibility = "hidden";
       if (a.Menu.bgImageOver) a.background.src = a.Menu.bgImageUp;
       a.focusItem.top = -100;
       a.clicked = false;
      if (l.hilite) {
       l.document.bgColor = l.menuHiliteBgColor;
       l.zIndex = 1;
       l.hilite.visibility = "inherit";
       l.hilite.zIndex = 2;
       l.document.layers[1].zIndex = 1;
       l.focusItem.zIndex = this.zIndex +2;
      if (l.Menu.bgImageOver) l.background.src = l.Menu.bgImageOver;
      l.focusItem.top = this.top;
      l.focusItem.left = this.left;
      l.focusItem.clip.width = l.clip.width;
      l.focusItem.clip.height = l.clip.height;
      l.Menu.hideChildMenu(l);
    } else if (l.style && l.Menu) {
      if (a) {
       a.style.backgroundColor = a.saveColor;
       if (a.hilite) a.hilite.style.visibility = "hidden";
       if (a.hiliteShim) a.hiliteShim.style.visibility = "inherit";
       if (a.Menu.bgImageUp) a.style.background = "url(" + a.Menu.bgImageUp +")";;
      l.style.backgroundColor = l.menuHiliteBgColor;
      l.zIndex = 1;
      if (l.Menu.bgImageOver) l.style.background = "url(" + l.Menu.bgImageOver +")";
      if (l.hilite) {
       l.hilite.style.visibility = "inherit";
       if( l.hiliteShim ) l.hiliteShim.style.visibility = "visible";
      l.focusItem.style.pixelTop = l.style.pixelTop;
      l.focusItem.style.top = l.focusItem.style.pixelTop + 'px';
      l.focusItem.style.pixelLeft = l.style.pixelLeft;
      l.focusItem.style.left = l.focusItem.style.pixelLeft + 'px';
      l.focusItem.style.zIndex = l.zIndex +1;
      l.Menu.hideChildMenu(l);
    } else return;
    window.ActiveMenuItem = l;
    function onMenuItemAction(e, l) {
    l = window.ActiveMenuItem;
    if (!l) return;
    hideActiveMenus();
    if (l.mmaction) eval("" + l.mmaction);
    window.ActiveMenuItem = 0;
    function MM_clearTimeout() {
    if (mmHideMenuTimer) clearTimeout(mmHideMenuTimer);
    mmHideMenuTimer = null;
    mmDHFlag = false;
    function MM_startTimeout() {
    if( window.ActiveMenu ) {
      mmStart = new Date();
      mmDHFlag = true;
      mmHideMenuTimer = setTimeout("mmDoHide()", window.ActiveMenu.Menu.hideTimeout);
    function mmDoHide() {
    if (!mmDHFlag || !window.ActiveMenu) return;
    var elapsed = new Date() - mmStart;
    var timeout = window.ActiveMenu.Menu.hideTimeout;
    if (elapsed < timeout) {
      mmHideMenuTimer = setTimeout("mmDoHide()", timeout+100-elapsed);
      return;
    mmDHFlag = false;
    hideActiveMenus();
    window.ActiveMenuItem = 0;
    function MM_showMenu(menu, x, y, child, imgname) {
    if (!window.mmWroteMenu) return;
    MM_clearTimeout();
    if (menu) {
      var obj = FIND(imgname) || document.images[imgname] || document.links[imgname] || document.anchors[imgname];
      x = moveXbySlicePos (x, obj);
      y = moveYbySlicePos (y, obj);
    if (document.layers) {
      if (menu) {
       var l = menu.menuLayer || menu;
       l.top = l.left = 1;
       hideActiveMenus();
       if (this.visibility) l = this;
       window.ActiveMenu = l;
      } else {
       var l = child;
      if (!l) return;
      for (var i=0; i<l.layers.length; i++) {      
       if (!l.layers[i].isHilite) l.layers[i].visibility = "inherit";
       if (l.layers[i].document.layers.length > 0) MM_showMenu(null, "relative", "relative", l.layers[i]);
      if (l.parentLayer) {
       if (x != "relative") l.parentLayer.left = x || window.pageX || 0;
       if (l.parentLayer.left + l.clip.width > window.innerWidth) l.parentLayer.left -= (l.parentLayer.left + l.clip.width - window.innerWidth);
       if (y != "relative") l.parentLayer.top = y || window.pageY || 0;
       if (l.parentLayer.isContainer) {
        l.Menu.xOffset = window.pageXOffset;
        l.Menu.yOffset = window.pageYOffset;
        l.parentLayer.clip.width = window.ActiveMenu.clip.width +2;
        l.parentLayer.clip.height = window.ActiveMenu.clip.height +2;
        if (l.parentLayer.menuContainerBgColor && l.Menu.menuBgOpaque ) l.parentLayer.document.bgColor = l.parentLayer.menuContainerBgColor;
      l.visibility = "inherit";
      if (l.Menu) l.Menu.container.visibility = "inherit";
    } else if (FIND("menuItem0")) {
      var l = menu.menuLayer || menu;
      hideActiveMenus();
      if (typeof(l) == "string") l = FIND(l);
      window.ActiveMenu = l;
      var s = l.style;
      s.visibility = "inherit";
      if (x != "relative") {
       s.pixelLeft = x || (window.pageX + document.body.scrollLeft) || 0;
       s.left = s.pixelLeft + 'px';
      if (y != "relative") {
       s.pixelTop = y || (window.pageY + document.body.scrollTop) || 0;
       s.top = s.pixelTop + 'px';
      l.Menu.xOffset = document.body.scrollLeft;
      l.Menu.yOffset = document.body.scrollTop;
    if (menu) window.activeMenus[window.activeMenus.length] = l;
    MM_clearTimeout();
    function onMenuItemDown(e, l) {
    var a = window.ActiveMenuItem;
    if (document.layers && a) {
      a.eX = e.pageX;
      a.eY = e.pageY;
      a.clicked = true;
    function mouseupMenu(e) {
    hideMenu(true, e);
    hideActiveMenus();
    return true;
    function getExplorerVersion() {
    var ieVers = parseFloat(navigator.appVersion);
    if( navigator.appName != 'Microsoft Internet Explorer' ) return ieVers;
    var tempVers = navigator.appVersion;
    var i = tempVers.indexOf( 'MSIE ' );
    if( i >= 0 ) {
      tempVers = tempVers.substring( i+5 );
      ieVers = parseFloat( tempVers );
    return ieVers;
    function mouseoutMenu() {
    if ((navigator.appName == "Microsoft Internet Explorer") && (getExplorerVersion() < 4.5))
      return true;
    hideMenu(false, false);
    return true;
    function hideMenu(mouseup, e) {
    var a = window.ActiveMenuItem;
    if (a && document.layers) {
      a.document.bgColor = a.saveColor;
      a.focusItem.top = -30;
      if (a.hilite) a.hilite.visibility = "hidden";
      if (mouseup && a.mmaction && a.clicked && window.ActiveMenu) {
        if (a.eX <= e.pageX+15 && a.eX >= e.pageX-15 && a.eY <= e.pageY+10 && a.eY >= e.pageY-10) {
        setTimeout('window.ActiveMenu.Menu.onMenuItemAction();', 500);
      a.clicked = false;
      if (a.Menu.bgImageOver) a.background.src = a.Menu.bgImageUp;
    } else if (window.ActiveMenu && FIND("menuItem0")) {
      if (a) {
       a.style.backgroundColor = a.saveColor;
       if (a.hilite) a.hilite.style.visibility = "hidden";
       if (a.hiliteShim) a.hiliteShim.style.visibility = "inherit";
       if (a.Menu.bgImageUp) a.style.background = "url(" + a.Menu.bgImageUp +")";
    if (!mouseup && window.ActiveMenu) {
      if (window.ActiveMenu.Menu) {
       if (window.ActiveMenu.Menu.hideOnMouseOut) MM_startTimeout();
       return(true);
    return(true);
    function hideChildMenu(hcmLayer) {
    MM_clearTimeout();
    var l = hcmLayer;
    for (var i=0; i < l.Menu.childMenus.length; i++) {
      var theLayer = l.Menu.childMenus[i];
      if (document.layers) theLayer.visibility = "hidden";
      else {
       theLayer = FIND(theLayer);
       theLayer.style.visibility = "hidden";
       if( theLayer.Menu.menuItemHAlign != 'left' ) {
        for(var j = 0; j < theLayer.Menu.menuItemLayers.length; j++) {
         var itemLayer = theLayer.Menu.menuItemLayers[j];
         if(itemLayer.textShim) itemLayer.textShim.style.visibility = "inherit";
      theLayer.Menu.hideChildMenu(theLayer);
    if (l.childMenu) {
      var childMenu = l.childMenu;
      if (document.layers) {
       l.Menu.MM_showMenu(null,null,null,childMenu.layers[0]);
       childMenu.zIndex = l.parentLayer.zIndex +1;
       childMenu.top = l.Menu.menuLayer.top + l.Menu.submenuYOffset;
       if( l.Menu.vertical ) {
        if( l.Menu.submenuRelativeToItem ) childMenu.top += l.top + l.parentLayer.top;
        childMenu.left = l.parentLayer.left + l.parentLayer.clip.width - (2*l.Menu.menuBorder) + l.Menu.menuLayer.left + l.Menu.submenuXOffset;
       } else {
        childMenu.top += l.top + l.parentLayer.top;
        if( l.Menu.submenuRelativeToItem ) childMenu.left = l.Menu.menuLayer.left + l.left + l.clip.width + (2*l.Menu.menuBorder) + l.Menu.submenuXOffset;
        else childMenu.left = l.parentLayer.left + l.parentLayer.clip.width - (2*l.Menu.menuBorder) + l.Menu.menuLayer.left + l.Menu.submenuXOffset;
       if( childMenu.left < l.Menu.container.clip.left ) l.Menu.container.clip.left = childMenu.left;
       var w = childMenu.clip.width+childMenu.left-l.Menu.container.clip.left;
       if (w > l.Menu.container.clip.width)  l.Menu.container.clip.width = w;
       var h = childMenu.clip.height+childMenu.top-l.Menu.container.clip.top;
       if (h > l.Menu.container.clip.height) l.Menu.container.clip.height = h;
       l.document.layers[1].zIndex = 0;
       childMenu.visibility = "inherit";
      } else if (FIND("menuItem0")) {
       childMenu = FIND(l.childMenu);
       var menuLayer = FIND(l.Menu.menuLayer);
       var s = childMenu.style;
       s.zIndex = menuLayer.style.zIndex+1;
       if (document.all || window.mmIsOpera) {
        s.pixelTop = menuLayer.style.pixelTop + l.Menu.submenuYOffset;
        if( l.Menu.vertical ) {
         if( l.Menu.submenuRelativeToItem ) s.pixelTop += l.style.pixelTop;
         s.pixelLeft = l.style.pixelWidth + menuLayer.style.pixelLeft + l.Menu.submenuXOffset;
         s.left = s.pixelLeft + 'px';
        } else {
         s.pixelTop += l.style.pixelTop;
         if( l.Menu.submenuRelativeToItem ) s.pixelLeft = menuLayer.style.pixelLeft + l.style.pixelLeft + l.style.pixelWidth + (2*l.Menu.menuBorder) + l.Menu.submenuXOffset;
         else s.pixelLeft = (menuLayer.style.pixelWidth-4*l.Menu.menuBorder) + menuLayer.style.pixelLeft + l.Menu.submenuXOffset;
         s.left = s.pixelLeft + 'px';
       } else {
        var top = parseInt(menuLayer.style.top) + l.Menu.submenuYOffset;
        var left = 0;
        if( l.Menu.vertical ) {
         if( l.Menu.submenuRelativeToItem ) top += parseInt(l.style.top);
         left = (parseInt(menuLayer.style.width)-4*l.Menu.menuBorder) + parseInt(menuLayer.style.left) + l.Menu.submenuXOffset;
        } else {
         top += parseInt(l.style.top);
         if( l.Menu.submenuRelativeToItem ) left = parseInt(menuLayer.style.left) + parseInt(l.style.left) + parseInt(l.style.width) + (2*l.Menu.menuBorder) + l.Menu.submenuXOffset;
         else left = (parseInt(menuLayer.style.width)-4*l.Menu.menuBorder) + parseInt(menuLayer.style.left) + l.Menu.submenuXOffset;
        s.top = top + 'px';
        s.left = left + 'px';
       childMenu.style.visibility = "inherit";
      } else return;
      window.activeMenus[window.activeMenus.length] = childMenu;
    function hideActiveMenus() {
    if (!window.activeMenus) return;
    for (var i=0; i < window.activeMenus.length; i++) {
      if (!activeMenus[i]) continue;
      if (activeMenus[i].visibility && activeMenus[i].Menu && !window.mmIsOpera) {
       activeMenus[i].visibility = "hidden";
       activeMenus[i].Menu.container.visibility = "hidden";
       activeMenus[i].Menu.container.clip.left = 0;
      } else if (activeMenus[i].style) {
       var s = activeMenus[i].style;
       s.visibility = "hidden";
       s.left = '-200px';
       s.top = '-200px';
    if (window.ActiveMenuItem) hideMenu(false, false);
    window.activeMenus.length = 0;
    function moveXbySlicePos (x, img) {
    if (!document.layers) {
      var onWindows = navigator.platform ? navigator.platform == "Win32" : false;
      var macIE45 = document.all && !onWindows && getExplorerVersion() == 4.5;
      var par = img;
      var lastOffset = 0;
      while(par){
       if( par.leftMargin && ! onWindows ) x += parseInt(par.leftMargin);
       if( (par.offsetLeft != lastOffset) && par.offsetLeft ) x += parseInt(par.offsetLeft);
       if( par.offsetLeft != 0 ) lastOffset = par.offsetLeft;
       par = macIE45 ? par.parentElement : par.offsetParent;
    } else if (img.x) x += img.x;
    return x;
    function moveYbySlicePos (y, img) {
    if(!document.layers) {
      var onWindows = navigator.platform ? navigator.platform == "Win32" : false;
      var macIE45 = document.all && !onWindows && getExplorerVersion() == 4.5;
      var par = img;
      var lastOffset = 0;
      while(par){
       if( par.topMargin && !onWindows ) y += parseInt(par.topMargin);
       if( (par.offsetTop != lastOffset) && par.offsetTop ) y += parseInt(par.offsetTop);
       if( par.offsetTop != 0 ) lastOffset = par.offsetTop;
       par = macIE45 ? par.parentElement : par.offsetParent;
    } else if (img.y >= 0) y += img.y;
    return y;

  • Popup menu on a JTable

    firstlly, I'll say that I'm new swing, so bare with me....
    I need to create a popup table that has two menuItems -
    1. add an item to the list
    2. remove an item from the list
    this popup menu should work on couple of different tables (I have 3 tables so far).
    I understood I should use MouseListeners, is that right?
    when I use the remove MenuItem I need to know which row was pressed. how do I know this? is this information contained in the event?
    I'd appreciate a code sample.
    thanks.

    To add a popupmenu :
    String[] menuItems = {"Add","Remove"};
    JPopupMenu mymenu = getPopupMenu(menuItems);
    // Create the menu Items
    public JPopupMenu getPopupMenu(String[] menuItems){
    JPopupMenu popMenu = new JPopupMenu("");
    for(int i=0;i<menuItems.length;i++){
    JMenuItem item = new JMenuItem(menuItems);
    item.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e){
    menuItem_clicked(e);
    popMenu.add(item);
    return popMenu;
    // Action
    private void menuItem_clicked(ActionEvent e){
    String whatToDo = e.getActionCommand();
    if(whatToDo=="Add"){
    // Add a row
    }else if(whatToDo=="Remove"){
    // Remove a row
    To add a Mouse Listener to the table to popup the menu :
    mytable.addMouseListener(new MouseAdapter() {
    public void mouseClicked(MouseEvent e) {
    table_mouseClicked(e);
    // Action
    private void table_mouseClicked(MouseEvent e){
    // Right Click
    if (e.getModifiers()==MouseEvent.META_MASK) {
    // Single Click
    if(e.getClickCount()==1){
    mymenu.show((Component)e.getSource(), e.getX(), e.getY());
    To get the row that was selected:
    mytable.getSelectedRow();
    Hope this helps...
    globe_sa

  • Cutom colors to popup menu

    Hi all, I need to install custom look and feel for my popup menu,
    the following code works fine most of the time but still it turns back to the default colors some time, can any one tell me why this behaviour.
    Also when a menuitem is selected a grey line is appeared below the selection I want to change that color too
    Thanks in advance, below is the code I am using
    UIManager.put("MenuItem.background",
                        oStyleReader.schemeMenuItemBackGroundColor);
          UIManager.put("MenuItem.foreground",
                        oStyleReader.schemeMenuItemForeGroundColor);
          UIManager.put("MenuItem.selectionBackground",
                        oStyleReader.schemeMenuItemSelectionBackGroundColor);
          UIManager.put("MenuItem.selectionForeground",
                        oStyleReader.schemeMenuItemSelectionForeGroundColor);
          UIManager.put("MenuItem.font", schemeMenuItemFont);
          UIManager.put("PopupMenu.border", oStyleReader.schemePopupMenuBorderColor);
          UIManager.put("PopupMenu.background",
                        oStyleReader.schemePopupMenuBackGroundColor);
          UIManager.put("PopupMenu.foreground",
                        oStyleReader.schemePopupMenuBackGroundColor);
          UIManager.put("Separator.highlight",
                        oStyleReader.schemeSeparatorHighLightColor);
          UIManager.put("Separator.shadow", oStyleReader.schemeSeparatorShadowColor);
          UIManager.put("Separator.background",
                        oStyleReader.schemeSeparatorBackGroundColor);
          UIManager.put("Separator.foreground",
                        oStyleReader.schemeSeparatorForeGroundColor);

    the following code works fine most of the time but still it turns back to the
    default colors some time.you would need to post a working sample program that demonstrates the behavior,
    along with instructions on how to achieve "back to the default colors some time"

  • Application wide popup menu for JTextComponent descendants

    Hi!
    I'm working on large project with reach Swing GUI and I got stuck with one small but wery annoing problem. I have to append simple popup menu to all text input fields (JTextComponent descendants) in whole application. I'm realy lazy to append mouse listener on each component, so I'm asking, is there any way to append "default" popup menu for all components. Please, don't answer about custom components instead of Swing plain JTextComponent descendants - it's worse to change classes for all fields then add mouse listener to them.
    As an example of what I want I could forward you to UIManager.put() method, which affects all properties of component behaviour thoughout application. I want to find same solution, maybe there any registry or smth. else in API.
    Than you in advice.

    You could always try extending something like MetalTextFieldUI so that it adds the listeners to the text field automatically. You'd then need to register that UI class with the UIManager at startup:
    public class MyTextFieldUI extends MetalTextFieldUI {
      protected void installListeners() {
        super.installListeners();
        // TODO - Install your listener here
      protected void uninstallListeners() {
        super.uninstallListeners();
        // TODO - Uninstall your listener here
    UIManager.put("TextFieldUI", MyTextFieldUI.class.getName());Personally, I think you're just being lazy... getting your components to extend a subclass of JTextField should be no trouble at all and will leave you with clearer code.
    Hope this helps.

  • How to get system popup menu in java?

    I want to know how to get windows xp or any operating systems default popupmenu in java.
    And i also have problem for using mnemonic for JPopupMenu, it works well when i first press right click of my mouse and use the specified mnemonic for that the action specifed for that is triggered but when is use mnemonic without the using my mouse it doesn't trigger why.

    Please how to get native(e.g windows explorer) popup menu in jfilechooser

  • Creating Popup Menu in Desktop Intelligence

    I need help creating a popup menu in the Tool menu of Deski.
    This popup needs to be visible when a report is open or when no report is open.
    It's my first add-in and I can't make my code work.
    Sub BuildMyMenu()
    Dim PopMenu As CmdBarControl
    Dim CleanPop As CmdBarControl
    Dim unvButton As CmdBarControl
    Dim lsiButton As CmdBarControl
    On Error Resume Next    'disable errors temporarily
    Set PopMenu = Application.CmdBars(1).Controls("&Tools").Controls("&Clean-Up Utility")
        If Err.Number = 0 Then  'button already exists
            Button.Delete       'delete it so that it can be re-defined
        Else
            Err.Clear           'clear the error so other testing can take place
        End If
    Set PopMenu = Application.CmdBars(1).Controls("&Tools").Controls.Add(boBarPopup)
    PopMenu.Caption = "&Clean-Up Utility"
    PopMenu.DescriptionText = "Clean-Up Utility"
    PopMenu.TooltipText = "Clean-Up Utility"
    Set unvButton = PopMenu.CmdBarPopup.Controls.Add(boControlButton)
    unvButton.Caption = "C&lean-Up Universe..."
    unvButton.DescriptionText = "Clean-Up Universe"
    unvButton.TooltipText = "Clean-Up Universe"
    unvButton.OnAction = filename(ThisDocument) & "!ShowUserForm2"
    Set PopMenu = Application.CmdBars(2).Controls("&Tools").Controls("&Clean-Up Utility")
        If Err.Number = 0 Then  'button already exists
            Button.Delete       'delete it so that it can be re-defined
        Else
            Err.Clear           'clear the error so other testing can take place
        End If
    Set PopMenu = Application.CmdBars(2).Controls("&Tools").Controls.Add(boBarPopup)
    PopMenu.Caption = "&Clean-Up Utility"
    PopMenu.DescriptionText = "Clean-Up Utility"
    PopMenu.TooltipText = "Clean-Up Utility"
    Set unvButton = PopMenu.CmdBarPopup.Controls.Add(boControlButton)
    unvButton.Caption = "C&lean-Up Universe..."
    unvButton.DescriptionText = "Clean-Up Universe"
    unvButton.TooltipText = "Clean-Up Universe"
    unvButton.OnAction = filename(ThisDocument) & "!ShowUserForm2"
    End Sub
    What I need is a popup menu from the Tools menu, that says "Clean-Up Utilities". From that popup menu, 2 more buttons: one that says "Clean-Up Universes" and the other "Clean-Up LSI".
    Thanks for your help.

    In what way, exactly, isn't it working? Do you see the pop up menu at all?
    Did you make sure that JS is enabled in your Acrobat?
    I've ran the code and it seems to work fine for me. However, I don't quite
    get what it's supposed to do.
    Is it supposed to take the user to a specific page, or to a named
    destination? It seems like it's trying to do both, which doesn't make much
    sense.

  • Copy data from one sheet to another based on content of popup menu

    I'm trying to create a spreadsheet to help teachers grade students during reading time in my school.  If you're interested in the specifics of it, the long version is in the following paragraph:
    I work in a high school, and 10% of each student's English class grade is supposed to come from reading during what is called "Enrichment time," a 20-minute daily reading time.  This occurs at the beginning of the second period of the school day.  With a few rare exceptions, students are not in their English teacher's class for this reading time; their 2nd period teacher, whether a teacher of math, science, English, or history, or whatever, records a daily grade for each student, based on whether or not the student is reading during enrichment time. In the past, teachers have recorded the grade of each student on a separate sheet of paper, then gone to the teachers' lounge and sorted through their students' grade sheets, putting each student's sheet into a folder for the student's English teacher to grade. Next year every teacher will have an iPad, so I'm trying to create a cloud-shared numbers spreadsheet that could help solve the problem of teachers not communicating well.  I've settled upon the solution of giving each teacher with a 2nd period Enrichment group access to a spreadsheet that would be accessible to all the English teachers as well.  The enrichment teacher would enter the students' names on teh far left hand side, then with each student's name the teacher's name would be indicated in a popup menu.  The first sheet is where the 2nd period enrichment teacher would enter the data, and then the different English teachers would, ideally, have a separate sheet with only their students populating that sheet. 
    tl;dr:
    I need sheet 2 to be populated with whole rows of data from sheet 1, and I want sheet 2 to only include rows which have a specific choice selected in a popup menu.
    Here's the document, via iCloud:
    https://www.icloud.com/iw/#numbers/BAL2c7eirUmlW1C8CvqB7F6X9LlhwHB3bHWF/Enrichme nt_Template

    A,
    It seems that your iCloud Numbers document is protected by password.
    Jerry

  • Opening pdf in ADF popup menu

    Hi All,
    I have big issue in opening a pdf file under ADF popup menu. currently, the popup menu is working fine and but i dun know how to load the pdf once the popup menu is loaded. I tried to put javascript code in <body> with "onLoad=...", however, i dun know how to load pdf from javascript.
    Any one has a good idea to get around this problem???
    Cheers,
    -T

    Hi!
    I would like to insert a pdf file into the database and then display it. Actually I do not know how to insert the file into the db nor how to extract it. I use a library (jpedal) to show the pdf and am able to represent a byte stream, but how do I get it?
    regards,
    Mario Udina

  • In iCloud Numbers how do I set up a popup menu in an entire column

    I have a database using iCloud Numbers. The table is for my tax deductions for 2014. In one column I have Doctors/Dentists/etc. Instead of typing that title each time I create a new entry in that column, how can I set a popup menu like I can in Excel and choose Doctors/Dentists/etc?

    Hi Aunest,
    You have couple of options here.
    You can make a copy of the site-wide template for every catalogue and build the menu manually.
    The other option is to use:
    {module_cataloguelistdump,-1,rowLength,targetFrame,sortBy}
    Displays the List of all Catalogues as names that are links to those catalogues
    Parameters:
    Use -1 to display parent catalogs, use -2 to display all catalogs including sub-catalogs or a catalogue ID to display the subcatalogues of a particular catalogue
    rowLength - will limit the number of items per row when items are displayed as a list. Default is 1 item per row.
    targetFrame - e.g. _blank. Specify the frame you want the item to open in
    sortBy - will sort the web apps in specified order
    Alphabetical - sorts items alphabetically
    Weight - sorts items by weight
    Example
    {module_cataloguelistdump,-1,1,_blank,Alphabetical} - this module will display the catalogue list in the new window, alphabetically and all in one column
    Cheers,
    -mario

  • How do I add an entry in Project Explorer's popup menu

    Is it possible to add my own entries in the popup menu of Project Explorer?
    I'm considering writing an LabVIEW addin that adds extra functionality to the Project Explorer, but I need a way to extend the context menu.
    /Leif

    LeifS wrote:
    Is it possible to add my own entries in the popup menu of Project Explorer?
    I'm considering writing an LabVIEW addin that adds extra functionality to the Project Explorer, but I need a way to extend the context menu.
    /Leif
    It is probably possible with digging deep into the contents of your "LabVIEW/resources" folder but will have a number of drawbacks. First your VI will need to provide a specific (undocumented) and most probably not so trivial interface that will be hard to uncover. It will somehow need to tell the project Explorer what it's name is and for what types of files or containers it should be displayed.
    Then those hooks will likely change between each LabVIEW version too as the Project Explorer is still a project under development. So unless there is an unlikely document here on ni.com that describes this (and which a search should clearly give you if there) I think it is simply not worth the hassle to dig into this.
    Rolf Kalbermatter
    Rolf Kalbermatter
    CIT Engineering Netherlands
    a division of Test & Measurement Solutions

  • Where is the Popup Menu in ACR 9?

    After installing ACR 9, I don't see the Popup Menu on top of the Firmstrip. All I see are the "Select All" and "Synchronize...". Right clicking on the firmstrip is not doing anything.
    Thank you.

    3js@adobe wrote:
    Nothing like you said on the menu bar.
    Right you are using CS6. Sorry.

  • Popup menu values

    Lets say I have a button that opens a popup menu with 2 levels:
    Fruits> Apple
                Banana
                Melon
    Vegetables> Carrot
                         Potato
                         Tomato
    Is it possible to get both values? I mean, to receive information if fruits or vegetables was selected and also what kind of fruit/vegetable.
    Thanks in advance.

    Hi,
    You could use the cReturn property to encode a value that lets you determine both values, such as;
    var choice = app.popUpMenuEx(
         {cName: "Fruits",
          oSubMenu: [ {cName: "Apple", cReturn: "Fruit,Apple" }, {cName: "Banana", cReturn: "Fruit,Banana" }, {cName: "Melon", cReturn: "Fruit,Melon" } ]},
         {cName: "Vegetables",
          oSubMenu: [ {cName: "Carrot", cReturn: "Vegetables,Carrot"}, {cName: "Potato", cReturn: "Vegetables,Potato"}, {cName: "Tomato", cReturn: "Vegetables,Tomato"} ]});
    if (choice !== null)
        var selection = choice.split(","); 
        app.alert("You selected the \"" + selection[1] + "\" menu item from the \"" + selection[0] + "\"");
    Not ideal as you are effectively coding up the menu structure twice (and assumes you will never use a comma character in a menu item name).
    Regards
    Bruce

Maybe you are looking for

  • I cracked my iPhone5s i have 5 mounts with it but it has no warranty what do i do

    iPhone5s i have 5 mounts with it but it has no warranty what do i do?

  • Reduce Track Header Size

    is there a way to reduce the horizontal length of the track header more?- I know dragging to the left reduces it a little

  • "Quicktime.cab is corrupt"

    I downloaded Quicktime 7 successfully, but it won't fully install. A message comes up saying, "cabinet file Quicktime.cab required for installation is corrupt and cannot be used. This could indicate a network error, an error reading from the CD-ROM,

  • Cldg switch command hangs for long time

    Hello Experts , We have renamed the veritas volumes vol1 and vol2 of disk group "dg", which is under cluster control. The renaming of volumes are successfully completed and modification updated in Cluster CCR (cldg sync dg) and volumes are mounted su

  • EDT Cat. 15 Data loaded to SAP but failed when updating

    Hi, I have an structure to load data into BP using KCLJ with Cat 15. Here it is. AKTYP TYPE PARTNER ROLE1 KUNNR KUNNR_EXT BU_GROUP FIBUKRS CHIND_ADDR NAME_CO NAME_ORG1 NAME_ORG2 STREET STR_SUPPL1 STR_SUPPL2 STR_SUPPL3 LOCATION HOUSE_NUM1 POST_CODE1 C