본문 바로가기

Programming Language/Java

Java AWT로 메뉴 넣기

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

창을 띄웠으니 메뉴도 넣어보겠습니다. Frame을 상속한 클래스에 MenuBar를 멤버변수로 선언합니다.

-- FormMain.java --

/* FormMain.java */
public class FormMain extends Frame {
	public static final long serialVersionUID = 0x9382942838495039L;
	
	/* 멤버로 MenuBar 선언 */
	private MenuBar menuBar;
	
	public FormMain() {
		super();
				
		this.setSize(800, 600);
		this.setVisible(true);
		this.addWindowListener(new FormMainWindowAdapter());

		/* MenuBar 인스턴스 생성하고 */
		this.menuBar = new MenuBar();
		/* 창에서 이 인스턴스로 메뉴 막대로 쓸 것임을 지정 */
		this.setMenuBar(this.menuBar);
	}
}

이렇게 작성하고 실행하면 결과는 전과 같이 빈 화면만 뜹니다. 여기에 메뉴를 넣어보겠습니다. [파일]-[편집]-[보기]-[도움말]의 기본적인 4가지를 삽입해볼까요

/* FormMain.java */
public class FormMain extends Frame {
	public static final long serialVersionUID = 0x9382942838495039L;
	
	private MenuBar menuBar; // 메뉴 막대
	private Menu menuFile; // [파일(F)] 메뉴
	private Menu menuEdit; // [편집(E)] 메뉴
	private Menu menuView; // [보기(V)] 메뉴
	private Menu menuHelp; // [도움말(H)] 메뉴
	
	public FormMain() {
		super();
				
		this.setSize(800, 600);
		this.setVisible(true);
		this.addWindowListener(new FormMainWindowAdapter());

		this.menuBar = new MenuBar();
		this.setMenuBar(this.menuBar);
		
		this.menuFile = new Menu("파일(F)");
		this.menuBar.add(this.menuFile);

		this.menuEdit = new Menu("편집(E)");
		this.menuBar.add(this.menuEdit);

		this.menuView = new Menu("보기(V)");
		this.menuBar.add(this.menuView);

		this.menuHelp = new Menu("도움말(H)");
		this.menuBar.add(this.menuHelp);
	}
}

이렇게 하면 실제로 화면에 4가지 메뉴가 표시됨을 확인할 수 있습니다.

각 메뉴에 하위 항목을 추가해보겠습니다. 예를 들어 [파일(F)] 메뉴에는 [새로 만들기(N)...], [열기(O)...], [저장(S)], [다른 이름으로 저장(A)...], [(구분자)], [인쇄(P)...], [(구분자)], [닫기(C)], [종료(X)]의 하위 항목을 넣겠습니다.

/* FormMain.java */
package com.tapito.ui;

import java.awt.*;

public class FormMain extends Frame {
	public static final long serialVersionUID = 0x9382942838495039L;
	
	private MenuBar menuBar;
	private Menu menuFile;
	private Menu menuEdit;
	private Menu menuView;
	private Menu menuHelp;
	private MenuItem menuFileNew; // 새로 만들기
	private MenuItem menuFileOpen; // 열기
	private MenuItem menuFileSave; // 저장
	private MenuItem menuFileSaveAs; // 다른 이름으로 저장
	private MenuItem menuFilePrint; // 인쇄
	private MenuItem menuFileClose; // 닫기
	private MenuItem menuFileExit; // 종료
	
	public FormMain() {
		super();
				
		this.setSize(800, 600);
		this.setVisible(true);
		this.addWindowListener(new FormMainWindowAdapter());

		this.menuBar = new MenuBar();
		this.setMenuBar(this.menuBar);
		
		this.menuFile = new Menu("파일(F)");
		this.menuBar.add(this.menuFile);

		this.menuEdit = new Menu("편집(E)");
		this.menuBar.add(this.menuEdit);

		this.menuView = new Menu("보기(V)");
		this.menuBar.add(this.menuView);

		this.menuHelp = new Menu("도움말(H)");
		this.menuBar.add(this.menuHelp);
		
		this.menuFileNew = new MenuItem("새로 만들기(N)");
		this.menuFile.add(this.menuFileNew);
		this.menuFileOpen = new MenuItem("열기(O)...");
		this.menuFile.add(this.menuFileOpen);
		this.menuFileSave = new MenuItem("저장(S)");
		this.menuFile.add(this.menuFileSave);
		this.menuFileSaveAs = new MenuItem("다른 이름으로 저장(A)...");
		this.menuFile.add(this.menuFileSaveAs);
		this.menuFile.addSeparator(); // 구분자
		this.menuFilePrint = new MenuItem("인쇄(P)");
		this.menuFile.add(this.menuFilePrint);
		this.menuFile.addSeparator(); // 구분자
		this.menuFileClose = new MenuItem("닫기(C)");
		this.menuFile.add(this.menuFileClose);
		this.menuFileExit = new MenuItem("종료(X)");
		this.menuFile.add(this.menuFileExit);
	}
}

실행 결과는