-
[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(); } }
실행결과)
반응형'Languages > Java' 카테고리의 다른 글
[JAVA] 멀티태스킹(multi-tasking), 스레드, 타이머 예제 (0) 2021.05.18 [JAVA] 그래픽 스윙 컴포넌트 그리기, paintCompnent() (0) 2021.05.18 [JAVA] 자바 고급 스윙 컴포넌트, JMenuBar, JToolBar, JToolTip, JDialog, JOptionPane , ex (0) 2021.05.10 [JAVA] 자바 JList<E>,JComboBox, JSlider, 슬라이더,JSlider와 Change 이벤트, 예제들 (0) 2021.05.10 [JAVA]자바 마우스리스너/어댑터 클래스/키 리스너/키 판별 방법 (0) 2021.05.10