본문 바로가기

프로그램언어/자바

스윙 메뉴만들기

메뉴만들기

 

import javax.swing.*;

 

public class MenuEx extends JFrame {

    public MenuEx() {

        setTitle("Menu 만들기 예제");

        createMenu();             // 메뉴 생성, 프레임에 삽입

        setSize(250,200);

        setVisible(true);

    }

 

    // 메뉴를 만들어 프레임에 삽입한다.

    private void createMenu() {

        JMenuBar mb = new JMenuBar(); // 메뉴바 생성

        JMenu screenMenu = new JMenu("보기");

 

        // 보기 메뉴에 메뉴아이템 생성 삽입

        screenMenu.add(new JMenuItem("불러오기"));

        screenMenu.add(new JMenuItem("숨기기"));

        screenMenu.add(new JMenuItem("다시보기"));

        screenMenu.addSeparator(); // 분리선 삽입

        screenMenu.add(new JMenuItem("닫기"));

 

        // 메뉴바에 메뉴 삽입
        mb.add(new JMenu("파일"));

        mb.add(screenMenu); // 보기 메뉴 삽입

        mb.add(new JMenu("편집"));

        mb.add(new JMenu("프로젝트"));

        mb.add(new JMenu("도움말"));

 

        // 메뉴바를 프레임에 부착

        setJMenuBar(mb);

    }

 

    public static void main(String [] args) {

        new MenuEx();

    }

}

실행결과]

메뉴에 액션설정

import javax.swing.*;

import java.awt.event.*;

import java.awt.*;

 

public class MenuActionEventEx extends JFrame {

    private JLabel imgLabel = new JLabel(); // 빈 이미지를 가진 레이블

    public MenuActionEventEx() {

        setTitle("MenuAction 리스너 만들기 예제");

        createMenu();

        getContentPane().add(imgLabel, BorderLayout.CENTER);

        setSize(250,220);

        setVisible(true);

    }

 

    private void createMenu() { // 메뉴바와 Screen 메뉴 생성. Screen 메뉴에 4개의 메뉴아이템 삽입

        JMenuBar mb = new JMenuBar(); // 메뉴바 생성

        JMenuItem [] menuItem = new JMenuItem [4];

        String[] itemTitle = {"불러오기", "숨기기", "다시보기", "닫기"};

        JMenu screenMenu = new JMenu("보기");

 

        // 4개의 메뉴아이템을 Screen 메뉴에 삽입한다.

        MenuActionListener listener = new MenuActionListener(); // Action 리스너 생성

        for(int i=0; i<menuItem.length; i++) {

            menuItem[i] = new JMenuItem(itemTitle[i]); // 메뉴아이템 생성

            menuItem[i].addActionListener(listener); // 메뉴아이템에 Action 리스너 등록

            screenMenu.add(menuItem[i]); // 메뉴아이템을 Screen 메뉴에 삽입

        }

        mb.add(screenMenu); // 메뉴바에 Screen 메뉴 삽입

        setJMenuBar(mb); // 메뉴바를 프레임에 부착

    }

 

    class MenuActionListener implements ActionListener { // 메뉴아이템 처리 Action 리스너

        public void actionPerformed(ActionEvent e) {

            String cmd = e.getActionCommand(); // 사용자가 선택한 메뉴아이템의 문자열 리턴

            switch(cmd) { // 메뉴 아이템의 종류 구분

            case "불러오기" :

                if(imgLabel.getIcon() != null)

                    return; // 이미 로딩되었으면 리턴

                imgLabel.setIcon(new ImageIcon("images/img.jpg"));

                break;

            case "숨기기" :

                imgLabel.setVisible(false);

                break;

            case "다시보기" :

                imgLabel.setVisible(true);

                break;

            case "닫기" :

                System.exit(0);

                break;

            }

        }

    }

    public static void main(String [] args) {

        new MenuActionEventEx();

    }

}

실행 결과]

 

툴바만들기

import javax.swing.*;

import java.awt.*;

 

public class ToolBarEx extends JFrame {

    private Container contentPane;

 

    public ToolBarEx() {

        setTitle("툴바 만들기 예제");

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        contentPane = getContentPane();

        createToolBar();

        setSize(400,200);

        setVisible(true);

    }

 

    // 툴바를 생성하여 컨텐츠팬에 부착한다.

    private void createToolBar() {

        // 툴바 생성

        JToolBar toolBar = new JToolBar("Kitae Menu"); // 툴바의 이름 "Kitae Menu"

        toolBar.setBackground(Color.LIGHT_GRAY);

 

        // 툴바에 메뉴로 사용할 컴포넌트를 삽입한다.

        toolBar.add(new JButton("New"));

        toolBar.add(new JButton(new ImageIcon("images/open.jpg")));

        toolBar.addSeparator();

        toolBar.add(new JButton(new ImageIcon("images/save.jpg")));

        toolBar.add(new JLabel("search"));

        toolBar.add(new JTextField("text field"));

 

        JComboBox<String> combo = new JComboBox<String>();

        combo.addItem("Java");

        combo.addItem("C#");

        combo.addItem("C");

        combo.addItem("C++");

        toolBar.add(combo);

 

        // 툴바를 컨텐츠팬의 NORTH에 부착한다.

        contentPane.add(toolBar, BorderLayout.NORTH);

    }

 

    public static void main(String [] args) {

        new ToolBarEx();

    }

}

실행 결과]

 

툴바만들기

import javax.swing.*;

import java.awt.*;

 

public class ToolTipEx extends JFrame {

    private Container contentPane;

 

    public ToolTipEx() {

        setTitle("툴팁 예제");

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        contentPane = getContentPane();

        createToolBar();

        setSize(400,150);

        setVisible(true);

    }

 

    // 툴바를 생성하여 컨텐트팬의 NORTH에 부착한다.

    private void createToolBar() {

        JToolBar bar = new JToolBar("Kitae Menu"); // 툴바 생성

        bar.setBackground(Color.LIGHT_GRAY);

 

        JButton newBtn = new JButton("New");

        newBtn.setToolTipText("파일을 생성합니다."); // New 버튼에 툴팁 달기

        bar.add(newBtn);

 

        JButton openBtn = new JButton(new ImageIcon("images/open.jpg"));

        openBtn.setToolTipText("파일을 엽니다."); // 열기 버튼에 툴팁 달기

        bar.add(openBtn);

        bar.addSeparator();

 

        JButton saveBtn = new JButton(new ImageIcon("images/save.jpg"));

        saveBtn.setToolTipText("파일을 저장합니다."); // 저장 버튼에 툴팁 달기

        bar.add(saveBtn);

        bar.add(new JLabel("search"));

 

        JTextField tf = new JTextField("text field");

        tf.setToolTipText("찾고자하는 문자열을 입력하세요"); // 텍스트필드에 툴팁 달기

        bar.add(tf);

        contentPane.add(bar, BorderLayout.NORTH);

    }

 

    public static void main(String [] args) {

        new ToolTipEx();

    }

}

실행결과]

 

다이얼로그박스 생성하기

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

 

class MyDialog extends JDialog {

    private JTextField tf = new JTextField(10); // 다이얼로그에 삽입할 텍스트 필드

    private JButton okButton = new JButton("OK"); // 다이얼로그에 삽입할 OK 버튼

 

    public MyDialog(JFrame frame, String title) {

        super(frame,title);

        setLayout(new FlowLayout());

        add(tf);

        add(okButton);

        setSize(200, 100);

 

        // 다이얼로그의 OK 버튼에 Action 리스너 달기

        // OK 버튼이 선택되면 다이얼로그가 화면에서 사라지게 한다.

        okButton.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {

                setVisible(false); // 다이얼로그를 보이지 않게 한다.

            }

        });

    }

}

 

public class DialogEx extends JFrame{

    private MyDialog dialog; // 다이얼로그의 레퍼런스

 

    public DialogEx() {

        super("dialogEx 예제 프레임");

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JButton btn = new JButton("Show Dialog");

 

        // 다이얼로그 생성

        dialog = new MyDialog(this, "Test Dialog");

 

        // Show Dialog 버튼을 선택하면 다이얼로그를 작동시킨다.

        btn.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {

                dialog.setVisible(true); // 다이얼로그를 출력하고 작동시킨다.

            }

        });

        getContentPane().add(btn);

        setSize(250,200);

        setVisible(true);

    }

    public static void main(String[] args) {

        new DialogEx();

    }

}

실행 결과]

 

다이얼로그박스에서 입력하고 폼에 출력하기

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

 

class MyModalDialog extends JDialog {

    private JTextField tf = new JTextField(10);

    private JButton okButton = new JButton("OK");

 

    public MyModalDialog(JFrame frame, String title) {

        super(frame, title, true); // true는 모달 타입을 만들도록 지시

        setLayout(new FlowLayout());

        add(tf);

        add(okButton);

        setSize(200, 100);

 

        okButton.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {

                setVisible(false); // 다이얼로그를 닫는다. 라인 44에서 리턴하게 한다..

            }

        });

    }

    // 텍스트필드 창에 사용자가 입력한 문자열을 리턴한다.

    // 입력된 내용이 없으면 null을 리턴한다.

    public String getInput() {

        if(tf.getText().length() == 0) return null;

        else return tf.getText();

    }

}

 

public class DialogEx2 extends JFrame{

    private MyModalDialog dialog; // 다이얼로그의 레퍼런스

 

    public DialogEx2() {

        super("DialogEx2 예제 프레임");

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JButton btn = new JButton("Show Modal Dialog");

 

        // 모달 다이얼로그 생성

        dialog = new MyModalDialog(this, "Test Modal Dialog");

 

        btn.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {

                dialog.setVisible(true); // 모달 다이얼로그 작동 시작

 

                // 다이얼로그로부터 사용자가 입력한 문자열을 받아 온다.

                String text = dialog.getInput();

 

                if(text == null) return; // 입력한 문자열이 없는 경우

                JButton btn = (JButton)e.getSource();

                btn.setText(text); // 입력한 문자열로 이 버튼의 문자열을 변경한다.

            }

        });

        getContentPane().add(btn);

        setSize(250,200);

        setVisible(true);

    }

    public static void main(String[] args) {

        new DialogEx2();

    }

}

실행 결과]

 

다이얼로그박스 예제1

import javax.swing.*;

import java.awt.event.*;

import java.awt.*;

 

public class OptionPaneEx extends JFrame {

    public OptionPaneEx() {

        setTitle("옵션 팬 예제");

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        Container c = getContentPane();

        setSize(500,200);

        c.add(new MyPanel(), BorderLayout.NORTH);

        setVisible(true);

    }

 

    class MyPanel extends Panel {

        private JButton inputBtn = new JButton("Input Name");

        private JTextField tf = new JTextField(10);

        private JButton confirmBtn = new JButton("Confirm");

        private JButton messageBtn = new JButton("Message");

 

        public MyPanel() {

            setBackground(Color.LIGHT_GRAY);

            add(inputBtn);

            add(confirmBtn);

            add(messageBtn);

            add(tf);

 

            inputBtn.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    // 입력 다이얼로그 생성

                    String name = JOptionPane.showInputDialog("이름을 입력하세요.");

                    if(name != null)

                    tf.setText(name); // 사용자가 입력한 문자열을 텍스트필드 창에 출력

                }

            });

 

            confirmBtn.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                // 확인 다이얼로그 생성

                    int result = JOptionPane.showConfirmDialog(null, "계속할 것입니까?", "Confirm", JOptionPane.YES_NO_OPTION);

 

                    // 사용자가 선택한 버튼에 따라 문자열을 텍스트필드 창에 출력

                    if(result == JOptionPane.CLOSED_OPTION)

                        tf.setText("Just Closed without Selection");

                    else if(result == JOptionPane.YES_OPTION)

                        tf.setText("Yes");

                    else

                        tf.setText("No");

                }

            });

 

            messageBtn.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                // 메시지 다이얼로그 생성

                    JOptionPane.showMessageDialog(null, "조심하세요", "Message", JOptionPane.ERROR_MESSAGE);

                }

            });

        }

    }

 

    public static void main(String [] args) {

        new OptionPaneEx();

    }

}

실행 결과]

 

이미지출력하기

import javax.swing.*;

import javax.swing.filechooser.*;

import java.awt.event.*;

import java.awt.*;

 

public class MenuAndFileDialogEx extends JFrame {

    private JLabel imageLabel = new JLabel();

 

    public MenuAndFileDialogEx() {

        setTitle("이미지출력하기");

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        Container c = getContentPane();

        c.add(imageLabel);

        createMenu();

        setSize(350,200);

        setVisible(true);

    }

 

    private void createMenu() {

        JMenuBar mb = new JMenuBar();

        JMenu fileMenu = new JMenu("파일");

        JMenuItem openItem = new JMenuItem("불러오기");

 

        openItem.addActionListener(new OpenActionListener());

        fileMenu.add(openItem);

        mb.add(fileMenu);

        setJMenuBar(mb);

    }

 

    // Open 메뉴아이템이 선택되면 호출되는 Action 리스너

    class OpenActionListener implements ActionListener {

        private JFileChooser chooser;

 

        public OpenActionListener() {

            chooser = new JFileChooser(); // 파일 다이얼로그 생성

        }

        public void actionPerformed(ActionEvent e) {

            FileNameExtensionFilter filter = new FileNameExtensionFilter("JPG & GIF Images", "jpg", "gif");

 

            chooser.setFileFilter(filter);                        // 파일 다이얼로그에 파일 필터 설정

            int ret = chooser.showOpenDialog(null);     // 파일 다이얼로그 출력

            if(ret != JFileChooser.APPROVE_OPTION) {   // 사용자가 창을 강제로 닫았거나 취소 버튼을 누른 경우

                JOptionPane.showMessageDialog(null, "파일을 선택하지 않았습니다",
                                                               "경고", JOptionPane.WARNING_MESSAGE);

                return;

            }

 

            String filePath = chooser.getSelectedFile().getPath();

            imageLabel.setIcon(new ImageIcon(filePath));

            pack(); // 이미지의 크기에 맞추어 프레임 크기 조절

        }

    }

    public static void main(String [] args) {

        new MenuAndFileDialogEx();

    }

}

 

실행결과]

 

'프로그램언어 > 자바' 카테고리의 다른 글

클래스2  (0) 2021.04.12
클래스1  (0) 2021.02.17
스레드2  (0) 2020.11.15
스레드1  (1) 2020.11.15
Collection 계열 클래스4  (0) 2020.11.14