ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JAVA] 자바 고급 스윙 컴포넌트, JMenuBar, JToolBar, JToolTip, JDialog, JOptionPane , ex
    Languages/Java 2021. 5. 10. 15:41
    반응형

     

     

     

     

     

     

     

     

    1.메뉴 만들기

     

    JMenuBar

    메뉴바의 기능을 하는 컴포넌트

     

    JMenu

    파일, 편집 등 하나의 매뉴 기능을 하는 컴포넌트

     

    JMenuItem

    파일 메뉴 내에 저장 등 메뉴 아이템 컴포넌트

     

    분리선

    메뉴 아이템 사이의 분리선

     

    nuBar mb = new JMenuBar();  //(1)
    
    JMenu sMenu = new JMenu("Screen"); //(2)
    mb.add(sMenu);
    
    sMenu.add(new JMenuItem("Load")); //(3)
    sMenu.add(new JMenuItem("Hide"));
    sMenu.add(new JMenuItem("ReShow"));
    sMenu.addSeparator();
    sMenu.add(new JMenuItem("SaveAs"));
    
    frame.setJMenuBar(mb); //(4)
    

     

     

     

    예제) 메뉴 만들기

     

    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("Screen");
        
    	screenMenu.add(new JMenuItem("Load"));
    	screenMenu.add(new JMenuItem("Hide"));
    	screenMenu.add(new JMenuItem("ReShow"));
    	screenMenu.addSeparator(); // 분리선 삽입
    	screenMenu.add(new JMenuItem("Exit"));
        
    	mb.add(screenMenu);
    	mb.add(new JMenu("Edit")); 
    	mb.add(new JMenu("Source"));
    	mb.add(new JMenu("Project"));
    	mb.add(new JMenu("Run"));
        
    	setJMenuBar(mb);
    }
    	public static void main(String [] args){
    		new MenuEx();
    	}
    }

     

     

     

     

     

    메뉴아이템에 Action 이벤트 달기

     

    ActionListener 이용

    각 JMenuItem 컴포넌트에 Action 이벤트 리스너 설정

    메뉴 아이템이 선택되었을 때 Action 이벤트 리스너 호출

     

     

    메뉴 아이템에 ActionListener를 다는 예

     

    MenuItem item = new JMenuItem("Load");
    item.addActionListener(new MenuActionListener()); // 메뉴아이템에 Action 리스너 등록
    screenMenu.add(item);
    ...
    class MenuActionListener implements ActionListener {
    public void actionPerformed(ActionEvent e) {
    // 사용자가 Load 메뉴아이템을 선택하는 경우 처리할 작업 구현
    }
    }

     

     

     

     

     

     

     

     

    JToolBar

     

    툴바를 구현한 컴포넌트

    여러 컴포넌트를 담을 수 있는 컨테이너

    버튼이나 이미지 등 모든 컴포넌트를 부착하여 이들을 메뉴처럼 사용

     

    툴바의 모양

    한 행 혹은 한 열로만 표현

     

    툴바가 부착되는 위치

    툴바는 BorderLayout 배치 관리자를 가진 컨테이너에만 부착

       상(NORTH), 하(SOUTH), 좌(WEST), 우(EAST) 측의 모서리 중 선택 부착

       사용자의 드래그에 의해 위의 4 가지 위치에 이동 부착 가능

    용자의 드래그에 의해 독립적인 다이얼로그 형태로 떨어져서 존재할 수 있음

    사용자의 드래그에 의한 이동이 불가능하게 할 수 있음

     

     

    툴바 만드는 과정

    1. JToolBar 객체 생성

    2. 컴포넌트를 JToolBar에 삽입

    3. JToolBar 컴포넌트를 컨테이너에 배치

           컨테이너는 BorderLayout 배치 관리자

     

     

    JToolBar toolBar = new JToolBar("Kitae Menu");
    toolBar.add(new JButton("New")); // 버튼 삽입
    toolBar.addSeparator(); // 분리 공간 삽입
    toolBar.add(new JTextField("text field")); // 텍스트필드 삽입
    // 컨테이너의 NORTH에 툴바를 삽입한다.
    container.add(toolBar, BorderLayout.NORTH); 

     

    툴바제어

     

    툴바생성자

    JToolBar()

    JToolBar(String title)

     

    툴바 드래그 못하게 고정하는 방법

     

    JToolBar.setFloatable(boolean b)

     

    툴바에 separator 삽입

     

    JToolBar.addSeparator()

     

     

     

    예제) 툴바 만들기

     

     

    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");
    	bar.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 combo = new JComboBox();
    	combo.addItem("Java");
    	combo.addItem("C#");
    	combo.addItem("C");
    	combo.addItem("C++");
    	toolBaradd(combo);
    	contentPane.add(toolBar, BorderLayout.NORTH);
    }
    
    public static void main(String [] args) {
    	new ToolBarEx();
    	}
    }

     

     

     

     

     

     

    JToolTip, 툴팁

     

    스윙 컴포넌트를 설명하는 팁 문구

    컴포넌트 위에 마우스를 올리면 잠깐 나타났다가 사라짐

     

    툴팁생성

    JComponent.setToolTipText(String msg) 이용 : 권장

     

    // 버튼에 툴팁을 다는 예
    JButton b = new JButton("open");
    b.setToolTipText("클릭하면 파일을 엽니다");

     

     

    예제) 툴팁 달기

     

     

    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);
    	}
        
    private void createToolBar() {
    	JToolBar bar = new JToolBar("Kitae Menu");
    	bar.setBackground(Color.LIGHT_GRAY);
    	JButton newBtn = new JButton("New");
    	newBtn.setToolTipText("파일을 생성합니다.");
    	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();
    	}
    } 
    
    

     

    실행결과)

     

    사진은 생략

     

     

    다이얼로그 만들기

     

     

    다이얼로그

    사용자로부터 입력을 받기 위한 대화 상자

     

    JDialog

    스윙에서 다이얼로그를 만들기 위한 슈퍼 클래스

    최상위 컨테이너

    다른 컨테이너에 속할 필요 없이 화면에 출력 가능한 컨테이너

     

    300 x 300 크기의 다이얼로그를 만드는 간단한 코드

     

    Dialog dialog = new JDialog();
    dialog.setTitle("나의 다이얼로그");
    dialog.add(new JButton("click!"));
    dialog.setSize(300,300);
    dialog.setVisible(true);

     

     

     

     

     

     

     

    팝업 다이얼로그, JOptionPane

     

    간단하고 유용한 팝업 다이얼로그 지원

     

     

    입력 다이얼로그

    한 줄 입력 받는 다이얼로그

    String JOptionPane.showInputDialog(String msg)

     

    확인 다이얼로그

    사용자로부터 yes/no 등 확인을 입력받는 다이얼로그

    int JOptionPane.showConfirmDialog(Component parentComponent, Object msg, String title, int optionType

     

    메시지 다이얼로그

    단순 메시지를 출력하는 다이얼로그

    void JOptionPane.showMessageDialog(Component parentComponent, Object msg, String title, int messageType

     

     

     

    예제) JOptionPane을 사용한 팝업 다이얼로그 작성

     

     

     

    package project;
    
    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);
    		JPanel pn = new JPanel();
    		pn.setBackground(Color.LIGHT_GRAY);
    		JButton inputBtn = new JButton("Input Name");
    		JTextField tf = new JTextField(10);
    		JButton confirmBtn = new JButton("Confirm");
    		JButton messageBtn = new JButton("Message");
    		pn.add(inputBtn);
    		pn.add(confirmBtn);
    		pn.add(messageBtn);
    		pn.add(tf);
    		c.add(pn, BorderLayout.NORTH);
    		setVisible(true);
    		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();
    		}
    }
    

     

     

    실행결과)

     

    반응형

    댓글

Designed by Tistory.