[Java] Window Programming - <Menu>

 메뉴

     1) Pull Down Menu(고정식)

           MenuBar : 메뉴가 고정되어 있는 프레임

           Menu : 프레임 안에 있는 메뉴

           MenuItem : 메뉴 안의 서브 메뉴들


        ex) 


     2) Pop Up Menu(이동식, Context Menu)




단순한 메뉴 만드는 예제


package menu;


import java.awt.Frame;

import java.awt.Menu;

import java.awt.MenuBar;

import java.awt.MenuItem;


public class MenuTest1 extends Frame{

private MenuBar bar;

private Menu file, edit,file_new;

private MenuItem file_open, file_save, file_exit;

private MenuItem edit_cut, edit_copy, edit_paste;

private MenuItem file_new_java, file_new_c;

public MenuTest1() {

addWindowListener(new WindowExit(this));

bar = new MenuBar();

file = new Menu("파일");

edit = new Menu("편집");

file_new = new Menu("새파일");

bar.add(file);

bar.add(edit);

file_new_java = new MenuItem("자바로 새로만들기");

file_new_c = new MenuItem("C로 새로만들기");

file_open = new MenuItem("파일 열기");

file_save = new MenuItem("파일 저장");

file_exit = new MenuItem("종료");

edit_cut = new MenuItem("잘라내기");

edit_copy = new MenuItem("복사하기");

edit_paste = new MenuItem("붙여넣기");

file_new.add(file_new_java);

file_new.add(file_new_c);

file.add(file_new);

file.add(file_open);

file.add(file_save);

file.addSeparator(); // 구분자

file.add(file_exit);

edit.add(edit_cut);

edit.add(edit_copy);

edit.add(edit_paste);

setMenuBar(bar);

}

public static void main(String[] args) {

MenuTest1 test = new MenuTest1();

test.setSize(300,400);

test.setVisible(true);

}

}




간단한 메모장 만들기


package menu;


import java.awt.FileDialog;

import java.awt.Frame;

import java.awt.Menu;

import java.awt.MenuBar;

import java.awt.MenuItem;

import java.awt.TextArea;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.io.BufferedReader;

import java.io.FileReader;

import java.io.FileWriter;

//간단한 메모장 만들기

public class MenuTest2 extends Frame implements ActionListener{

private MenuBar bar; //메뉴바

private Menu file; //메뉴

private MenuItem file_open, file_save, file_exit; //서브메뉴

private TextArea area; //글공간

private FileDialog fopen, fsave;

public MenuTest2() {

addWindowListener(new WindowExit(this));

bar = new MenuBar();

file = new Menu("파일");

area = new TextArea();

fopen = new FileDialog(this,"파일 열기", FileDialog.LOAD);

fsave = new FileDialog(this,"파일 저장", FileDialog.SAVE);

bar.add(file);

file_open = new MenuItem("파일 열기");

file_save = new MenuItem("파일 저장");

file_exit = new MenuItem("종료");

file.add(file_open);

file.add(file_save);

file.addSeparator(); // 구분자

file.add(file_exit);

setMenuBar(bar);

add("Center",area);

file_exit.addActionListener(this);

file_open.addActionListener(this);

file_save.addActionListener(this);

}

@Override

public void actionPerformed(ActionEvent arg0) {

if(arg0.getActionCommand().equals("종료")) {

dispose();

}else if(arg0.getActionCommand().equals("파일 열기")) {

try {

fopen.setVisible(true);

String filepath = fopen.getDirectory() + "\\" + fopen.getFile();

FileReader freader = new FileReader(filepath);

BufferedReader br = new BufferedReader(freader);

String input = null;

while((input=br.readLine())!=null) {

area.append(input + "\n");

}

}catch(Exception e) {

e.printStackTrace();

}

}else {

try {

fsave.setVisible(true);

String filepath = fsave.getDirectory() + "\\" + fsave.getFile();

FileWriter fw = new FileWriter(filepath);

fw.write(area.getText());

fw.close();

}catch(Exception e) {

e.printStackTrace();

}

}

}



public static void main(String[] args) {

MenuTest2 test = new MenuTest2();

test.setSize(300,400);

test.setVisible(true);

}

}



실행결과↓



파일여는 것과 저장하는 것 까지 모두 가능하다..



팝업메뉴 예제


package menu;


import java.awt.Frame;

import java.awt.MenuItem;

import java.awt.PopupMenu;

import java.awt.event.MouseListener;


import org.w3c.dom.events.MouseEvent;


//팝업메뉴 -> 키보드 or 마우스로 실행

public class MenuTest3 extends Frame implements MouseListener{

PopupMenu pmenu;

MenuItem fileopen, filesave, exit;

public MenuTest3() {

addWindowListener(new WindowExit(this));

pmenu = new PopupMenu();

fileopen = new MenuItem("파일 열기");

filesave = new MenuItem("파일 저장");

exit = new MenuItem("종료");

pmenu.add(fileopen);

pmenu.add(filesave);

pmenu.add(exit);

add(pmenu);

addMouseListener(this);

}

@Override

public void mouseClicked(java.awt.event.MouseEvent arg0) {

// TODO Auto-generated method stub

pmenu.show(this, arg0.getX(), arg0.getY()); 

}


@Override

public void mouseEntered(java.awt.event.MouseEvent arg0) {

// TODO Auto-generated method stub

}




@Override

public void mouseExited(java.awt.event.MouseEvent arg0) {

// TODO Auto-generated method stub

}


@Override

public void mousePressed(java.awt.event.MouseEvent arg0) {

// TODO Auto-generated method stub

}


@Override

public void mouseReleased(java.awt.event.MouseEvent arg0) {

// TODO Auto-generated method stub

}




public static void main(String[] args) {

MenuTest3 test = new MenuTest3();

test.setSize(300,400);

test.setVisible(true);

}

}



-> Adapter Class를 받아도 되지만 Listener를 받아서 오버라이딩을 해보았다.

-> 실행 결과는 마우스 클릭을 했을때 패널 메뉴가 나오면 된다.



'BACKEND > Java' 카테고리의 다른 글

[Java] Network  (0) 2017.11.08
[Java] Swing  (0) 2017.11.07
[Java] ItemEvent/TextEvent 예제  (0) 2017.11.07
[Java] Window Programing - <Event>  (0) 2017.11.06
[Java] Window Programming - <Layout>  (0) 2017.11.06

댓글

Designed by JB FACTORY