자바(Java)/JAVA 2SE

메뉴(Menu) 컴포넌트 클래스

본클라쓰 2010. 7. 11. 17:22

 

 메뉴는 프로그램 창에서 사용자가 프로그램의 기능을 선택할 수 있도록 도와준다. 보통, 메뉴의 구성은 메뉴바, 메뉴, 메뉴 아이템으로 구성된다. 자바 AWT에서 메뉴를 담당하는 클래스는 MenuComponent 클래스로 부터 상속을 받아 구현된 클래스를 사용한다. MenuComponent 클래스는 추상클래스로 메뉴에 관련된 클래스의 최상위 클래스이다. MenuComponent 클래스는 MenuBar 클래스와 MenuItem 클래스로 객체 모델링 되어 있다.


 MenuItem 클래스는 Menu클래스와 CheckboxMenuItem 클래스로 구성되며, Menu 클래스는 PopupMenu 클래스를 하위 클래스로 가지고 있다.


 메뉴를 구성하는 방법은 MenuBar Menu → MenuItem 이런 방식으로 클래스를 생성하면 된다. 즉, MenuBar 클래스를 생성한 후 MenuItem 객체를 추가한 후 Menu 객체를 MenuBar 객체에 추가시켜 사용한다. 마지막으로 MenuBar 객체를 Frame 객체에 추가시키면 메뉴를 사용할 수 있다.  

 

 

순 서

  1. 메뉴바 클래스 객체 생성 : MunuBar bar = new MenuBar();
  2. 메뉴 클래스 객체를 생성 : Menu menu = new Menu("name");
  3. 메뉴에 메뉴 아이템 추가 : MenuItem item = new MenuItem("메뉴아이템 이름");           menu.add(itme);
  4. 메뉴바에 메뉴 추가 : bar.add(menu);
  5. Frame 객체에 메뉴바 추가 : setMenuBar(bar);



/*
 *  제   목  : 메뉴바(MenuBar)에 대한 예제
 *  작성일 : 2009. 01. 27
 *  간단한 메뉴바를 생성하는 프로그램
 */
import java.awt.*;
import java.awt.event.*;

 

public class Simulator extends Frame implements ActionListener {

 
      MenuBar menubar;  // 메뉴바 클래스
      TextArea  text;
      MenuItem fileNew, fileOpen, fileSave, fileExit; // 메뉴 아이템
      MenuItem editCopy, editCut, editPaste;

 

      public Simulator() {

 
          super("Simulator"); // 메뉴바를 담을 Frame 클래스 생성
          menubar = new MenuBar(); // 메뉴바 생성
          setMenuBar(menubar); // Frame에 메뉴바를 추가
         
          /*
           * file에 대한 메뉴 클래스
           */
          Menu file = new Menu("File"); 
          fileNew = new MenuItem("New");
          fileNew.addActionListener(this);
          MenuShortcut N = new MenuShortcut(KeyEvent.VK_N, false);
          fileNew.setShortcut(N);
          fileOpen = new MenuItem("Open");
          fileOpen.addActionListener(this);
          MenuShortcut O = new MenuShortcut(KeyEvent.VK_O, false);
          fileOpen.setShortcut(O);
          fileSave = new MenuItem("Save");
          fileSave.addActionListener(this);
          MenuShortcut S = new MenuShortcut(KeyEvent.VK_S, false);
          fileSave.setShortcut(S);
          fileExit = new MenuItem("Exit");
          fileExit.addActionListener(this);
          MenuShortcut x = new MenuShortcut(KeyEvent.VK_X, true);
          fileExit.setShortcut(x);

 
          file.add(fileNew);
          file.add(fileOpen);
          file.add(fileSave);
          file.addSeparator();     // 구분선을 사용할 때는 addSeparator() 메소드 호출
          file.add(fileExit);
         
          /*
           * edit에 대한 메뉴 클래스
           */
          Menu edit = new Menu("Edit");
          editCopy = new MenuItem("Copy");
          editCopy.addActionListener(this);
          MenuShortcut C = new MenuShortcut(KeyEvent.VK_C, false);
          editCopy.setShortcut(C);
          editCut = new MenuItem("Cut");
          editCut.addActionListener(this);
          MenuShortcut X = new MenuShortcut(KeyEvent.VK_X, false);
          editCut.setShortcut(X);
          editPaste = new MenuItem("Paste");
          editPaste.addActionListener(this);
          MenuShortcut V = new MenuShortcut(KeyEvent.VK_V, false);
          editPaste.setShortcut(V);

 
          edit.add(editCopy);
          edit.add(editCut);
          edit.add(editPaste);

 

          /*
           * help에 대한 메뉴 클래스
           */
          Menu help = new Menu("Help");
          menubar.add(file);
          menubar.add(edit);
          menubar.add(help);
          menubar.setHelpMenu(help);

          text = new TextArea();
          add("Center", text);
         
          /*
           * 윈도우 종료 메소드
           */
          addWindowListener(new WindowAdapter(){
           public void windowClosing(WindowEvent evt){
            dispose();
            System.exit(0);
           }
          });
         
          pack();
          //setSize(250,250);
          setVisible(true);
      }

 

      /*

       * 실제 작용은 하지 않고 콘솔창에 출력만

       */ 

      public void actionPerformed(ActionEvent e) {
          Object o = e.getSource();
          if(o == fileNew) {
              System.out.println("New");
          } else if(o == fileOpen) {
              System.out.println("Open");
          } else if(o == fileSave) {
              System.out.println("Save");
          } else if(o == fileExit) {
              System.exit(0);
          } else if(o == editCopy) {
              System.out.println("Copy");
          } else if(o == editCut) {
             System.out.println("Cut");
          } else if(o == editPaste){
              System.out.println("Paste");
          }
      }

 

      public static void main(String args[]) {
           new Simulator();
      }
    }

  

[사진] 위 코드의 실행 결과