Исходный текст приложения MenuApp

Оглавление Окна и диалоговые панели Окна класса Frame Меню MenuBar Класс Menu Класс MenuItem Диалоговые панели Приложение MenuApp Исходный текст Описание текста

Назад Вперед

Исходный текст приложения MenuApp представлен в листинге 1.

Листинг 1. Файл MenuApp.java

    import java.awt.*;

    public class MenuApp
    {
      public static void main(String args[])
      {
        MainFrameWnd frame =
          new MainFrameWnd("MenuApp");

        frame.setSize(
        frame.getInsets().left +
          frame.getInsets().right  + 320,
          frame.getInsets().top  +
          frame.getInsets().bottom + 240);

        frame.show();
      }
    }

    class MainFrameWnd extends Frame
    {
      MenuBar mbMainMenuBar;
      Menu mnFile;
      Menu mnHelp;

      public MainFrameWnd(String sTitle)
      {
        super(sTitle);

        setSize(400, 200);

        setBackground(Color.yellow);
        setForeground(Color.black);

        setLayout(new FlowLayout());

        mbMainMenuBar = new MenuBar();

        mnFile = new Menu("File");

        mnFile.add("New");
        mnFile.add("-");
        mnFile.add("Exit");

        mnHelp = new Menu("Help");

        mnHelp.add("Content");
        mnHelp.add("-");
        mnHelp.add("About");

        mbMainMenuBar.add(mnFile);
        mbMainMenuBar.add(mnHelp);

        setMenuBar(mbMainMenuBar);
      }

      public void paint(Graphics g)
      {
        g.setFont(new Font(
          "Helvetica", Font.PLAIN, 12));

        g.drawString("Frame window", 10, 70);

        super.paint(g);
      }

      public boolean handleEvent(Event evt)
      {
        if(evt.id == Event.WINDOW_DESTROY)
        {
          setVisible(false);
          System.exit(0);
          return true;
        }
        else
          return super.handleEvent(evt);
      }

      public boolean action(Event evt, Object obj)
      {
        MenuItem mnItem;

        if(evt.target instanceof MenuItem)
        {
          mnItem = (MenuItem)evt.target;

          if(obj.equals("Exit"))
          {
            System.exit(0);
          }

          else if(obj.equals("New"))
          {
            MessageBox mbox;

            mbox = new MessageBox(
              "Item New selected",
              this, "Dialog from Frame", true);
            mbox.show();
          }

          else if(obj.equals("Content"))
          {
            MessageBox mbox;

            mbox = new MessageBox(
              "Item Content selected",
              this, "Dialog from Frame", true);
            mbox.show();
          }

          else if(obj.equals("About"))
          {
            MessageBox mbox;
            mbox = new MessageBox(
              "Item About selected",
              this, "Dialog from Frame", true);
            mbox.show();
          }
          else
            return false;
          return true;
        }
        return false;
      }
    }

    class MessageBox extends Dialog
    {
      Label lbMsg;
      Button btnOK;

      public MessageBox(String sMsg,
        Frame  parent, String  sTitle,
        boolean  modal)
      {
        super(parent, sTitle, modal);
        resize(200, 100);
        setLayout(new GridLayout(2, 1));
        lbMsg = new Label(sMsg, Label.CENTER);
        add(lbMsg);
        btnOK = new Button("OK");
        add(btnOK);
      }

      public boolean handleEvent(Event evt)
      {
        if(evt.id == Event.WINDOW_DESTROY)
        {
          dispose();
          return true;
        }
        else
          return super.handleEvent(evt);
      }

      public boolean action(Event evt, Object obj)
      {
        Button btn;
        if(evt.target instanceof Button)
        {
          btn = (Button)evt.target;

          if(evt.target.equals(btnOK))
          {
            dispose();
          }
          else
            return false;
          return true;
        }
        return false;
      }
    }

Назад Вперед