HOY_MyMenu.java



//CLASE GENERICA PARA EL MENU
import java.awt.*;
import java.awt.event.*;

public class MyMenu extends Menu {
 public MyMenu(Object labels[],ActionListener al,ItemListener il) {
  super((String)labels[0]);
  String menuName = (String) labels[0];
  char firstMenuChar = menuName.charAt(0);
  if(firstMenuChar == '~' || firstMenuChar =='!'){
   setLabel(menuName.substring(1));
   if(firstMenuChar == '~') setEnabled(false);
  }
  for(int i=1;i<labels.length;++i) {
   if(labels[i] instanceof String){
    if("-".equals(labels[i])) addSeparator();
    else{
     String label = (String)labels[i];
     char firstChar = label.charAt(0);
     switch(firstChar){
     case '+':
      CheckboxMenuItem checkboxItem = new CheckboxMenuItem(label.substring(1));
      checkboxItem.setState(true);
      add(checkboxItem);
      checkboxItem.addItemListener(il);
      break;
     case '#':
      checkboxItem = new CheckboxMenuItem(label.substring(1));
      checkboxItem.setState(true);
      checkboxItem.setEnabled(false);
      add(checkboxItem);
      checkboxItem.addItemListener(il);
      break;
     case '-':
      checkboxItem = new CheckboxMenuItem(label.substring(1));
      checkboxItem.setState(false);
      add(checkboxItem);
      checkboxItem.addItemListener(il);
      break;
     case '=':
      checkboxItem = new CheckboxMenuItem(label.substring(1));
      checkboxItem.setState(false);
      checkboxItem.setEnabled(false);
      add(checkboxItem);
      checkboxItem.addItemListener(il);
      break;
     case '~':
      MenuItem menuItem = new MenuItem(label.substring(1));
      menuItem.setEnabled(false);
      add(menuItem);
      menuItem.addActionListener(al);
      break;
     case '!':
      menuItem = new MenuItem(label.substring(1));
      add(menuItem);
      menuItem.addActionListener(al);
      break;
     default:
      menuItem = new MenuItem(label);
      add(menuItem);
      menuItem.addActionListener(al);
     }
    }
   }else{
    add(new MyMenu((Object[])labels[i],al,il));
   }
  }
 }
 public MenuItem getItem(String menuItem) {
  int numItems = getItemCount();
  for(int i=0;i<numItems;++i)
   if(menuItem.equals(getItem(i).getLabel())) return getItem(i);
  return null;
 }
}