자바의 메뉴 만들기
메뉴 만들기
필요한 스윙 컴포넌트
• JMenuBar : 메뉴바의 기능을 하는 컴포넌트
• JMenu : 파일, 편집 등 하나의 메뉴 기능을 하는 컴포넌트
• JMenuItem : 파일 메뉴 내에 저장 등 메뉴 아이템 컴포넌트
• separator : 메뉴 아이템 사이의 분리선
메뉴를 만드는 과정
(1) JMenuBar 컴포넌트를 생성
(2) JMenu 컴포넌트 생성 후, JMenuBar에 부착
(3) JMuneItem 컴포넌트 생성 후, JMenu에 부착
import javax.swing.*;
public class CreateMenuEx extends JFrame {
public CreateMenuEx() {
super("메뉴 만들기 예제");
createMenu();
setSize(300, 200);
setVisible(true);
}
private void createMenu() {
JMenuBar menuBar = new JMenuBar(); // MenuBar 컴포넌트 생성
JMenu fileMenu = new JMenu("파일"); // "파일" 메뉴 컴포넌트 생성
fileMenu.add(new JMenuItem("열기")); // 메뉴 아이템 생성 후, "파일" 메뉴에 추가
fileMenu.add(new JMenuItem("숨기기"));
fileMenu.addSeparator(); // "파일" 메뉴에 분리선 추가
fileMenu.add(new JMenuItem("닫기"));
menuBar.add(fileMenu); // 메뉴바에 메뉴 추가
menuBar.add(new JMenu("편집"));
menuBar.add(new JMenu("포맷"));
menuBar.add(new JMenu("보기"));
menuBar.add(new JMenu("윈도우"));
menuBar.add(new JMenu("도움말"));
setJMenuBar(menuBar); // 메뉴바 설정
}
public static void main(String[] args) {
new CreateMenuEx();
}
}
• 실행 결과
메뉴 아이템에 이벤트 달기
• ActionListener 이욜
• 각 JMenuItem 컴포넌트에 Action 이벤트 리스너를 설정
예제
• 위의 예제 사용
• 파일 메뉴의 '열기' 메뉴 아이템 선택 시 이미지 로드
• 파일 메뉴의 '닫기' 메뉴 아이템 선택 시 프로그램 종료
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class AddActionToMenuEx extends JFrame {
private JLabel imgLabel = new JLabel();
public AddActionToMenuEx() {
super("메뉴 만들기 예제");
createMenu();
Container contentPane = getContentPane();
contentPane.add(imgLabel, BorederLayout.CENTER);
setSize(300, 200);
setVisible(true);
}
private void createMenu() {
JMenuBar menuBar = new JMenuBar(); // MenuBar 컴포넌트 생성
JMenu fileMenu = new JMenu("파일"); // "파일" 메뉴 컴포넌트 생성
JMenuItem[] menuItems = new JMenuItem[3];
String[] items = {"열기", "숨기기", "닫기"};
MenuAction act = new MenuAction();
// 메뉴 아이템마다 ActionListener 등록
for(int i=0; i<menuItems.length; i++) {
menuItems[i] = new JMenuItem(items[i]); // 메뉴 아이템 컴포넌트 생성
menuItems[i].addActionListener(act); // 리스너 등록
fileMenu.add(menuItems[i]);
if(i == 1)
fileMenu.addSeparator(); // 숨기기와 닫기 사이에 구분선 추가
}
menuBar.add(fileMenu); // 메뉴바에 메뉴 추가
menuBar.add(new JMenu("편집"));
menuBar.add(new JMenu("포맷"));
menuBar.add(new JMenu("보기"));
menuBar.add(new JMenu("윈도우"));
menuBar.add(new JMenu("도움말"));
setJMenuBar(menuBar); // 메뉴바 설정
}
class MenuAction implements ActionListener {
public void actionPerformed(ActionEvent e) {
String command = e.getActionCommand();
switch(command) { // 메뉴 아이템 구분
case "열기":
if(imgLabel.getIcon() != null) // 이미지가 열려있다면 리턴
return;
imgLabel.setIcon(new ImageIcon("이미지 링크"));
break;
case "숨기기":
imgLabel.setVisible(false); // 이미지 숨기기
break;
case "닫기":
System.exit(0); // 시스템 종료
break;
}
}
}
}
• 실행 결과 - 열기 선택
• 실행 결과 - 숨기기 선택
Author And Source
이 문제에 관하여(자바의 메뉴 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@mdev97/자바의-고급-스윙-컴포넌트저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)