4. 메뉴컴포넌트


1. 메뉴만들기

  • 폴더에 폴더를 담듯 menu에 menu를 담아 계층형으로 구성
  • 화면에 나타나는 최상위 menybar를 frame을 추가함으로써 구성
    • menu에 menuitem 추가
    • menubar에 menu 추가
    • frame에 menubar 포함
  • ChectboxMenuItem
    • 메뉴를 클릭할 때마다 메뉴 앞에 체크표시가 설정되거나 해제된다
    • 생성자
      • CheckboxMenuItem(String name, boolean status)
  • 메뉴 컴포넌트 포함관계
    • menutree
  • 메뉴 예시
import java.awt.CheckboxMenuItem;
import java.awt.Frame;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;

public class MenuTest {

	public static void main(String[] args) {
		Frame f = new Frame("menu");
		f.setSize(300,200);
		
		MenuBar mb = new MenuBar();
		Menu mFile = new Menu("File");
		
		MenuItem miNew = new MenuItem("New");
		MenuItem miOpen = new MenuItem("Open");
		Menu mOthers = new Menu("Othesrs"); //하위 메뉴 추가를 위해 menu
		MenuItem miExit = new MenuItem("Exit");
		
		mFile.add(miNew); //menu에 menuitem 추가
		mFile.add(miOpen);
		mFile.add(mOthers); //menu에 menu 추가
		mFile.addSeparator(); //menu경계선 추가
		mFile.add(miExit);
		
		MenuItem miPrint = new MenuItem("Print...");
		MenuItem miPreview = new MenuItem("Print Preview");
		MenuItem miSetup = new MenuItem("Print setup");
		mOthers.add(miPrint);
		mOthers.add(miPreview);
		mOthers.add(miSetup);
		
		Menu mEdit = new Menu("Edit");
		Menu mView = new Menu("View");
		Menu mHelp = new Menu("Help");
		CheckboxMenuItem miStatus = new CheckboxMenuItem("Statusbar");
		mView.add(miStatus);
		
		mb.add(mFile); //menubar에 menu 추가
		mb.add(mEdit);
		mb.add(mView);
		mb.setHelpMenu(mHelp);
		
		f.setMenuBar(mb); //frame에 menubar 추가
		f.setVisible(true);
	}
}

menutest


PopupMenu

  • frame에 고정적인 menubar와는 달리, 마우스 우클릭 시 나타나는 메뉴
import java.awt.Frame;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class PopupMenuTest {

	public static void main(String[] args) {
		Frame f = new Frame("Popup menu");
		f.setSize(300,300);
		
		PopupMenu pMenu = new PopupMenu("Edit");
		MenuItem miCut = new PopupMenu("Cut");
		MenuItem miCopy = new PopupMenu("Copy");
		MenuItem miPaste = new PopupMenu("Paste");
		
		pMenu.add(miCut);
		pMenu.add(miCopy);
		pMenu.add(miPaste);
		
		f.add(pMenu);
		f.addMouseListener(new MouseAdapter() {

			@Override
			public void mousePressed(MouseEvent e) {
				// TODO Auto-generated method stub
				if(e.getModifiers()==e.BUTTON3_MASK) {    // 1.왼쪽버튼, 2.휠버튼, 3.오른쪽버튼
					pMenu.show(f, e.getX(), e.getY());
				}
			}
			
		});
		
		f.setVisible(true);
	}
}

popupmenu