import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
/*
* [1] JMenuBar 에 등록 : [File], [Edit], [View], [Help]
* 1) [View] 메뉴 클릭 시 - [Show], [Hidden] 서브 메뉴(메뉴 아이템)
* 2) [File] 메뉴 클릭 시 - [New], [Notepad], [Calc], [msPaint], [Exit] 메뉴아이템
* - 단, [New] 메뉴 아래에 구분선 삽입, [msPaint] 메뉴 아래에도 구분선 삽입
* - [Exit] 메뉴 선택 시 : 종료 확인 다이얼로그(예/아니오 버튼) -> "예" 버튼 누르면 프로그램 종료
*/
public class Menu extends JFrame{
JPanel p = new JPanel();
JLabel imglbl = new JLabel(); // 이미지를 출력할 라벨 생성
Menu() {
this.setTitle("나만의 프로그램");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(800, 700);
//=============================== 메뉴바와 메뉴아이템 생성하는 메소드 호출 ===============================
createMenu();
// ========================================================================================
p.setLayout(new BorderLayout()); // 동서남북, 가운데 방향 지정
p.add(imglbl, BorderLayout.CENTER); // 이미지 라벨을 가운데에 출력
this.setContentPane(p); // 프레임의 컨테이너로 패널을 부착
this.setVisible(true); // 화면 보이기
}
void createMenu() {
// 메뉴바 생성
JMenuBar mb = new JMenuBar();
// [File], [Edit], [View], [Help] 메뉴 생성
JMenu fileMenu = new JMenu("File");
// 배열을 이용해 메뉴아이템 생성, 액션리스너 달기 [New], [Notepad], [Calc], [msPaint], [Exit]
JMenuItem[] menuItem = new JMenuItem[5];
String[] menuTitle = {"새로만들기", "메모장", "계산기", "그림판", "끝내기"};
for(int i=0; i<menuItem.length; i++) {
menuItem[i] = new JMenuItem(menuTitle[i]); // 문자열 갖는 메뉴아이템 생성
menuItem[i].addActionListener(new ShowAction()); // actionPerformed() 메소드가 실행
fileMenu.add(menuItem[i]);
if(i==0 || i==3) { // 파일 메뉴의 메뉴아이템 0번, 3번 아래에 구분선 삽입하기
fileMenu.addSeparator();
}
}
//================================================================================
JMenu editMenu = new JMenu("Edit");
JMenu viewMenu = new JMenu("View");
// 액션리스너 달기 : [Show], [Hidden] 메뉴 아이템 부착
JMenuItem showItem = new JMenuItem("Show");
showItem.addActionListener(new ShowAction()); // actionPerformed() 메소드가 실행
viewMenu.add(showItem);
viewMenu.addSeparator(); // 분리선 삽입
JMenuItem hiddenItem = new JMenuItem("Hidden");
hiddenItem.addActionListener(new ShowAction()); // actionPerformed() 메소드가 실행
viewMenu.add(hiddenItem);
//=================================================================================
JMenu helpMenu = new JMenu("Help");
// 메뉴바에 생성한 메뉴 등록하기
mb.add(fileMenu); mb.add(editMenu);
mb.add(viewMenu); mb.add(helpMenu);
// 프레임에 메뉴바 부착하기
this.setJMenuBar(mb);
}
class ShowAction implements ActionListener {
public void actionPerformed(ActionEvent e) {
String cmd = e.getActionCommand(); // 선택한 메뉴 아이템의 문자열 리턴
switch(cmd) {
case "Show" : // 이미지 보이기
imglbl.setIcon(new ImageIcon("a.jpg"));
imglbl.setVisible(true);
break;
case "Hidden" : // 이미지 감추기
imglbl.setVisible(false);
break;
// "새로만들기", "메모장", "계산기", "그림판", "끝내기"
case "새로만들기" :
imglbl.setIcon(null); // 이미지 출력하는 라벨 초기화
break;
case "메모장" :
try { // 메모장 프로그램 가져와 실행하기
Process ps1 = Runtime.getRuntime().exec("c:\\windows\\notepad.exe");
}catch(IOException e1) { // 파일이 없거나 예외사항이 발생하면
System.out.println("파일이 없습니다.");
}
break;
case "계산기" :
try { // 메모장 프로그램 가져와 실행하기
Process ps1 = Runtime.getRuntime().exec("c:\\windows\\system32\\calc.exe");
}catch(IOException e1) { // 파일이 없거나 예외사항이 발생하면
System.out.println("파일이 없습니다.");
}
break;
case "그림판" :
try { // 메모장 프로그램 가져와 실행하기
Process ps1 = Runtime.getRuntime().exec("c:\\windows\\system32\\mspaint.exe");
}catch(IOException e1) { // 파일이 없거나 예외사항이 발생하면
System.out.println("파일이 없습니다.");
}
break;
case "끝내기" :
// JOptionPane.showConfirmDialog( null, "출력메세지", "타이틀", "버튼종료");
int result = JOptionPane.showConfirmDialog(null, "끝내시겠습니까?", "종료", JOptionPane.YES_NO_OPTION);
if(result==JOptionPane.CANCEL_OPTION) {
// [X] 버튼 누른 경우
break;
}
else if(result==JOptionPane.YES_OPTION) {
System.exit(0); // 예 버튼 누른 경우
break;
}
else {
break; // 아니오 버튼 누른 경우
}
}
}
}
public static void main(String[] args) {
new Menu();
}
}
'IT > JAVA' 카테고리의 다른 글
[JAVA/자바] 체크박스(CheckBox) 예제 - 2 (0) | 2017.05.30 |
---|---|
[JAVA/자바] 체크박스(CheckBox) 예제 - 1 (0) | 2017.05.30 |
[JAVA/자바] 텍스트 문자열 예제 (JTextField / JTextArea) (0) | 2017.05.30 |
[JAVA/자바] 플로우레이아웃(FlowLayout) / 액션리스너(ActionListener) 를 이용한 간단한 GUI 예제 (0) | 2017.05.30 |
[JAVA/자바] 스캐너(Scanner)를 이용한 성적 처리 프로그램(학번, 이름, 과목명, 출석, 과제, 시험) (0) | 2017.05.30 |