ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JAVA] 파일 다이얼로그, 탭팬
    Languages/Java 2021. 5. 18. 17:20
    반응형

     

     

     

     

     

     

     

     

     

     

     

     

    파일 다이얼로그

     

     

     JFileChooser

     파일 시스템의 탐색기와 같은 기능을 하는 다이얼로그

     사용자에게 파일이나 디렉터리를 쉽게 선택하도록 하는 기능

     

     다이얼로그 종류

     파일 열기 다이얼로그(File Open Dialog)  파일 저장 다이얼로그(File Save Dialog)

     

     주의 사항

     파일 다이얼로그에서 사용자가 파일을 선택하는 행위란?

     사용자가 선택한 파일 이름을 얻기 위함

     파일을 읽거나 쓰는 행위가 아님

     

     다이얼로그 닫기란?

     다이얼로그가 화면에서 보이지 않게 됨

     JFileChooser 객체가 없어지거나 사용할 수 없게 것이 아님

     showOpenDialog() 메소드를 호출하면 다시 화면에 출력하고 재사용 가능

     다이얼로그가 닫힌 후 JFileChooser 객체로부터 사용자가 입력한 정보를 알아낼 수 있음

     

     

     

     

     

     

     

    예제) 파일 열기 다이얼로그 생성 및 출력

     

     

    package project;
    
    import javax.swing.*;
    import javax.swing.filechooser.*;
    import java.awt.event.*;
    import java.awt.*;
    
    public class MenuAndFileDialogEx extends JFrame {
    	private JLabel imageLabel = new JLabel();
    	private JFileChooser chooser = new JFileChooser();
    	
    	public MenuAndFileDialogEx() {
    		setTitle("Menu와 JFileChooser 활용 예제");
    		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("File");
    		JMenuItem openItem = new JMenuItem("Open");
    		openItem.addActionListener(new ActionListener() {
    			
    			@Override
    			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();
    			}
    		});
    		
    		fileMenu.add(openItem);
    		mb.add(fileMenu);
    		setJMenuBar(mb);
    	}
    	
    	public static void main(String [] args) {
    		new MenuAndFileDialogEx();
    	}
    }
    
    

     

     

     

    실행결과)

     

     

     

     

     

    탭팬

     

    JTabbedPane

     여러 패널을 겹치게 하여 공간을 공유하도록 지원하는 팬

     

     

    생성자

     JTabbedPane()

     JTabbedPane(int tabPlacement)

     

     

     

     

    팬 주요 메소드

     

    탭 만들어 탭팬에 붙이기

     void addTab(String title, Component comp)

     title : 탭의 이름, comp : 탭을 구성하는 컴포넌트

     

    JTabbedPane pane = new JTabbedPane(JTabbedPane.LEFT);
    pane.addTab("tab1", new JLabel(new ImageIcon("images/img1.jpg")));
    pane.addTab("tab2", new JLabel(new ImageIcon("images/img2.jpg")));
    pane.addTab("tab3", new MyPanel());
    add(pane);

     

    탭팬에 붙은 탭의 개수

     int getTabCount() - 탭팬에 붙은 탭의 개수 리턴

     

    현재 선택된 탭

     int getSelectedIndex()

     Component getSelectedComponent()

     

    탭 삭제

     void remove(Component comp)

     void remove(int index)

     void removeTabAt(int index)

     

    탭 위치 변경

     void setTabPlacement(int tabPlacement)

     

     

     

     

    예제)탭팬 만들기

     

     

    package project;
    
    import javax.swing.*; 
    import java.awt.*;
    
    public class TabbedPaneEx extends JFrame {
    	public TabbedPaneEx() {
    		setTitle("탭팬 만들기 예제");
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		Container c = getContentPane();
    		
    	JTabbedPane pane = new JTabbedPane(JTabbedPane.LEFT);
    	pane.addTab("tab1", new JLabel(new ImageIcon("images/img1.jpg")));
    	pane.addTab("tab2", new JLabel(new ImageIcon("images/img2.jpg")));
    	pane.addTab("tab3", new JLabel(new ImageIcon("images/img3.jpg")));
    	
    	c.add(pane, BorderLayout.CENTER);
    	setSize(250,250);
    	setVisible(true);
    	}
    	
    
    	public static void main(String [] args) {
    		new TabbedPaneEx();
    	}
    } 
    

     

     

    실행결과)

     

    반응형

    댓글

Designed by Tistory.