Menus
File: java/Menus/Main.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Main extends JFrame implements ActionListener {
// Remember it in ivar so others can change its contents
private MyCanvas canvas;
public static void main (String [] args) {
new Main();
}
public Main () {
// Window setup
setLocation (100, 100);
setSize (300, 300);
setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
Container content = getContentPane();
// Put something in our window
canvas = new MyCanvas ();
content.add (canvas);
// Add a menu
JMenu menu = new JMenu ("File");
// And its items
JMenuItem item = new JMenuItem ("First");
menu.add (item);
item.addActionListener (this);
item = new JMenuItem ("Second");
menu.add (item);
item.addActionListener (this);
item = new JMenuItem ("Quit");
menu.add (item);
item.addActionListener (this);
// Add menu to a menu bar
JMenuBar menuBar = new JMenuBar ();
menuBar.add (menu);
// Another menu
JMenu menu2 = new JMenu ("Edit");
// Some items for menu2
item = new JMenuItem ("Edit-1");
menu2.add (item);
item.addActionListener (this);
item = new JMenuItem ("Edit-2");
menu2.add (item);
item.addActionListener (this);
item = new JMenuItem ("Edit-3");
menu2.add (item);
item.addActionListener (this);
// Add menu2 to the menu bar
menuBar.add (menu2);
// Install menu bar in our window
setJMenuBar (menuBar);
setVisible (true);
}
// ActionListener method for all the pull-down menu items
public void actionPerformed (ActionEvent e) {
if (e.getActionCommand().equals ("Quit")) System.exit (0);
else {
// Change the contents of canvas
canvas.setContent ("Menu item: " + e.getActionCommand());
}
}
}
File: java/Menus/MyCanvas.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MyCanvas extends JComponent {
// Remember it in ivar so can redraw
private String content = "Waiting for menu item";
// We provide, others can set our content
public void setContent (String content) {
this.content = content;
repaint ();
}
// This is our draw callback
public void paintComponent (Graphics g) {
g.drawString (content, 100, 100);
}
}