2

I am new to Java and I was wondering how to add functionality to menu item?
What I would like it to do, is to set two values to 0.

This is the code I have currently:

JMenuItem clear = new JMenuItem("Clear");
Options.add(clear);
4
  • 3
    Read the tutorials on creating and using ActionListeners and adding them to JMenuItems. Commented May 7, 2011 at 19:22
  • Thanks but i have literally no idea what to do, and they aren't very helpfull Commented May 7, 2011 at 19:25
  • 3
    In your case, we're going to be even less helpful than a tutorial. Your question is simply too broad for a specific, definitive answer. Commented May 7, 2011 at 19:26
  • 1
    like any other skill, using and learning from the Swing tutorials gets better with practice. Don't dismiss them out of hand as unhelpful -- they are very helpful, but rather improve your skills at working with them. They have helped me and many others here and will help you too. Best of luck! Commented May 7, 2011 at 19:43

2 Answers 2

4

This example is from the book "Java Foundation Classes in a Nutshell".
Written by David Flanagan. Copyright (c) 1999 by O'Reilly & Associates.

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class MenuDemo {
  public static void main(String[] args) {
    // Create a window for this demo
    JFrame frame = new JFrame("Menu Demo");
    JPanel panel = new JPanel();
    frame.getContentPane().add(panel, "Center");

    // Create an action listener for the menu items we will create
    // The MenuItemActionListener class is defined below
    ActionListener listener = new MenuItemActionListener(panel);

    // Create some menu panes, and fill them with menu items
    // The menuItem() method is important.  It is defined below.
    JMenu file = new JMenu("File");
    file.setMnemonic('F');
    file.add(menuItem("New", listener, "new", 'N', KeyEvent.VK_N));
    file.add(menuItem("Open...", listener, "open", 'O', KeyEvent.VK_O));
    file.add(menuItem("Save", listener, "save", 'S', KeyEvent.VK_S));
    file.add(menuItem("Save As...", listener, "saveas", 'A', KeyEvent.VK_A));

    JMenu edit = new JMenu("Edit");
    edit.setMnemonic('E');
    edit.add(menuItem("Cut", listener, "cut", 0, KeyEvent.VK_X));
    edit.add(menuItem("Copy", listener, "copy", 'C', KeyEvent.VK_C));
    edit.add(menuItem("Paste", listener, "paste", 0, KeyEvent.VK_V));

    // Create a menubar and add these panes to it.
    JMenuBar menubar = new JMenuBar();
    menubar.add(file);
    menubar.add(edit);

    // Add menubar to the main window.  Note special method to add menubars
    frame.setJMenuBar(menubar); 

    // Now create a popup menu and add the some stuff to it
    final JPopupMenu popup = new JPopupMenu();
    popup.add(menuItem("Open...", listener, "open", 0, 0));
    popup.addSeparator();                // Add a separator between items
    JMenu colors = new JMenu("Colors");  // Create a submenu
    popup.add(colors);                   // and add it to the popup menu
    // Now fill the submenu with mutually-exclusive radio buttons
    ButtonGroup colorgroup = new ButtonGroup();
    colors.add(radioItem("Red", listener, "color(red)", colorgroup));
    colors.add(radioItem("Green", listener, "color(green)", colorgroup));
    colors.add(radioItem("Blue", listener, "color(blue)", colorgroup));

    // Arrange to display the popup menu when the user clicks in the window
    panel.addMouseListener(new MouseAdapter() {
      public void mousePressed(MouseEvent e) {
    // Check whether this is the right type of event to pop up a popup
    // menu on this platform.  Usually checks for right button down.
    if (e.isPopupTrigger()) 
      popup.show((Component)e.getSource(), e.getX(), e.getY());
      }
    });

    // Finally, make our main window appear
    frame.setSize(450, 300);
    frame.setVisible(true);
  }

  // A convenience method for creating menu items.
  public static JMenuItem menuItem(String label, 
                   ActionListener listener, String command, 
                   int mnemonic, int acceleratorKey) {
    JMenuItem item = new JMenuItem(label);
    item.addActionListener(listener);
    item.setActionCommand(command);
    if (mnemonic != 0) item.setMnemonic((char) mnemonic);
    if (acceleratorKey != 0) 
      item.setAccelerator(KeyStroke.getKeyStroke(acceleratorKey, 
                         java.awt.Event.CTRL_MASK));
    return item;
  }

  // A convenience method for creating radio button menu items.
  public static JMenuItem radioItem(String label, ActionListener listener, 
                    String command, ButtonGroup mutExGroup) {
    JMenuItem item = new JRadioButtonMenuItem(label);
    item.addActionListener(listener);
    item.setActionCommand(command);
    mutExGroup.add(item);
    return item;
  }

  // A event listener class used with the menu items created above.
  // For this demo, it just displays a dialog box when an item is selected.
  public static class MenuItemActionListener implements ActionListener {
    Component parent;
    public MenuItemActionListener(Component parent) { this.parent = parent; }
    public void actionPerformed(ActionEvent e) {
      JMenuItem item = (JMenuItem) e.getSource();
      String cmd = item.getActionCommand();
      JOptionPane.showMessageDialog(parent, cmd + " was selected.");
    }
  }
}

enter image description here

Hope it help you get started

Sign up to request clarification or add additional context in comments.

2 Comments

Thanks for this as well great help!
-1 for spreading outdated code ;-) Use Action instead of ActionLister, use the componentPopupMenu property instead of manual mouseListener (which here is even incomplete)
2

You will need to add an ActionListener. This is an interface which must implement a method called actionPerformed.

E.g

clear.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent actionEvent) {
      // Clear two values.
    }
});`

This will add an anonymous ActionListener that is invoked once the JMenuItem is clicked.

Hope that helps.

1 Comment

It is called an annotation. Basically this annotation will make sure that the method below inherits from it's superclass. In other words, it will ensure you've typed everything correctly. Have a look at download.oracle.com/javase/tutorial/java/javaOO/… for more information.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.