We are about to switch to a new forum software. Until then we have removed the registration on this forum.
I'm trying to add a menu bar to my sketch frame. I found the code below ( http://www.java-tips.org/java-se-tips-100019/15-javax-swing/1755-how-to-create-menu-bar.html ) and it would work to have some sort of menu bar, but I would really like to attach it to the frame. I found some old code of how to attach a menu bar., but it no longer works. Even after updating the calls like JMenu etc. , it breaks on the frame.setJMenuBar(myMenu) say the Jmenubar iss not applicable to that method.
Is it possible to modify this code to have the menu bar associated with frame?
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ButtonGroup;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JRadioButtonMenuItem;
public class MenuExp extends JFrame {
public MenuExp() {
setTitle("Menu Example");
setSize(400, 50);
// Creates a menubar for a JFrame
JMenuBar menuBar = new JMenuBar();
// Add the menubar to the frame
setJMenuBar(menuBar);
// Define and add two drop down menu to the menubar
JMenu fileMenu = new JMenu("File");
JMenu editMenu = new JMenu("Edit");
menuBar.add(fileMenu);
menuBar.add(editMenu);
// Create and add simple menu item to one of the drop down menu
JMenuItem newAction = new JMenuItem("New");
JMenuItem openAction = new JMenuItem("Open");
JMenuItem exitAction = new JMenuItem("Exit");
JMenuItem cutAction = new JMenuItem("Cut");
JMenuItem copyAction = new JMenuItem("Copy");
JMenuItem pasteAction = new JMenuItem("Paste");
// Create and add CheckButton as a menu item to one of the drop down
// menu
JCheckBoxMenuItem checkAction = new JCheckBoxMenuItem("Check Action");
// Create and add Radio Buttons as simple menu items to one of the drop
// down menu
JRadioButtonMenuItem radioAction1 = new JRadioButtonMenuItem(
"Radio Button1");
JRadioButtonMenuItem radioAction2 = new JRadioButtonMenuItem(
"Radio Button2");
// Create a ButtonGroup and add both radio Button to it. Only one radio
// button in a ButtonGroup can be selected at a time.
ButtonGroup bg = new ButtonGroup();
bg.add(radioAction1);
bg.add(radioAction2);
fileMenu.add(newAction);
fileMenu.add(openAction);
fileMenu.add(checkAction);
fileMenu.addSeparator();
fileMenu.add(exitAction);
editMenu.add(cutAction);
editMenu.add(copyAction);
editMenu.add(pasteAction);
editMenu.addSeparator();
editMenu.add(radioAction1);
editMenu.add(radioAction2);
// Add a listener to the New menu item. actionPerformed() method will
// invoked, if user triggred this menu item
newAction.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
System.out.println("You have clicked on the new action");
}
});
}
/* public static void main(String[] args) {
MenuExp me = new MenuExp();
me.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
me.setVisible(true);
} */
}
MenuExp me = new MenuExp();
void setup(){
size(600,600);
me.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
me.setVisible(true);
}
void draw(){
background(100);
}
Answers
Here's the old code I found. It breaks on frame.setMenuBar(myMenu);
https://processing.org/discourse/beta/num_1214314785.html
I got the menu bar to appear. frame is of type Frame not JFrame . Now I have to try to work out the listener issue. When I uncomment it, its giving me an error I dont't even understand. "myMenuListener must implement the inherited abstract method ItemListener.itemStateChanged(ItemEvent) "
I'll need to reed a few books on java to understand that error massage. Is there something I'm not importing that could save me all that reading?
I've edited it some more - got rid of the error and this works. I think I can use this.
I have it working now. This puts a menu bar on your sketch:
And this fixes it completely. I guess itemStateChanged is in a file I wasn't importing and the wild card imports them all:
Next up - add scroll bars to the frame :)