자바의 메뉴 만들기

22688 단어 JavaJava

메뉴 만들기

필요한 스윙 컴포넌트

• 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;
            }
        }
    }
}

실행 결과 - 열기 선택

실행 결과 - 숨기기 선택

좋은 웹페이지 즐겨찾기