Menu Placing Ways: Since, Menu is not a component, it cannot be placed in a component directly. To overcome this, menu classes can be placed in an applet without inheriting the setMenuBar() method. This can be done in 3 simple ways:
Object f = getParent ();
while (! (f instanceof Frame))
f = ((Component) f).getParent ();
Frame frame = (Frame) f;
Selection Events are never passed to an applet as they cannot be handled by the MenuItem. Hence, custom menu items are used here by declaring explicitly.
import java.applet.*; import java.awt.*; import java.lang.*; import java.util.*; public class Splesson extends Applet { private Frame frame; private MenuBar mbar; private Menu fm, hm; private MenuItem ol, of, pr, hi, hc; private Label message = new Label("Welcome to SPlessons."); private Label message1 = new Label("Select an option from menu"); public void init() { setLayout(new BorderLayout()); add("North", message); add("Center", message1); Object f = getParent (); while (! (f instanceof Frame)) f = ((Component) f).getParent(); frame = (Frame) f; mbar = new MenuBar(); mbar.add(fm = new Menu("File")); mbar.add(hm = new Menu("Help")); mbar.setHelpMenu(hm); fm.add(ol = new MenuItem("Open Location")); fm.add(of = new MenuItem("Open File")); fm.addSeparator(); fm.add(pr = new MenuItem("Print")); hm.add(hi = new MenuItem("Index")); hm.add(hc = new MenuItem("Content")); frame.setMenuBar(mbar); frame.pack(); } public boolean action(Event e, Object arg) { if (e.target == ol || e.target == of || e.target == pr || e.target == hi || e.target == hc) { message.setText((String) arg); return true; } return super.action(e,arg); } }
Output