Languages/Java

[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();
	}
} 

 

 

실행결과)

 

반응형