[Java] Window Programming - <Menu>
- BACKEND/Java
- 2017. 11. 7. 11:30
● 메뉴 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 |