고급 스윙 컴포넌트.

Slides:



Advertisements
Similar presentations
6 장 객체 - 지향 설계 ③. 목차 GUI 레이아웃  전화기 키 패드 전화기 키 패드 전화기 키 패드 모양의 GUI 를 만드는 Telephone.java, TelephonePanel.java 를 완성해 보자.  주석을 참고하여 TelephonePanel.java.
Advertisements

1/ 편집 기능 사용하기 – 실습 1 글자 모양을 바꾸고 싶은 곳을 블록 설정 [ 글자 모양 ] 대화 상자에서 [ 글꼴 ] ‘ 궁서체 ’, [ 글자 색 ] ‘ 토마토색 ’ 으로 선택 → [ 설정 ] 클릭 → 글자 모양 변경.
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
명품 JAVA Programming 제 9 장 자바의 GUI, AWT와 Swing.
명품 JAVA Essential.
명품 JAVA Programming.
Chapter 16 : Struts 프레임워크 2. chapter 16 : Struts 프레임워크 2.
어서와 Java는 처음이지! 제12장 스윙 컴포넌트.
명품 JAVA Programming 제 11 장 스윙 컴포넌트와 이벤트 핸들링.
- 계산기 GUI 구성하기 - 조원: 박강국 오정은 이귀식 김도윤 안영진.
그래픽 프로그래밍 (GUI - Graphic User Interface)
Ch.22 Command Pattern 장 덕 성 계명대학교 컴퓨터공학과 정보공학실험실
9장. 스윙 프로그래밍.
GUI 이벤트, 이벤트 리스너와 이벤트 소스 그림 그리기 내부 클래스
149개의 실습예제로 배우는 Flash 8.
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
컴퓨터프로그래밍 1주차실습자료 Visual Studio 2005 사용법 익히기.
명품 JAVA Essential.
Image & Video processing
Java 16장. 스윙 public class SumTest {
최윤정 Java 프로그래밍 클래스 상속 최윤정
레이아웃 관리자 스윙 구성요소 비트박스 프로그램
명품 JAVA Programming 제 13 장 스레드와 멀티태스킹.
컴퓨터 프로그래밍 실습 #7 제 4 장 GUI 클래스 작성.
GUI 환경에서 작동하는 프로그램에 대하여 윈도우 프로그램의 작성 방법 그래픽과 이미지 디스플레이 방법 오디오 파일 재생 방법
명품 JAVA Essential.
명품 JAVA Programming.
윤 홍 란 다이알로그(대화상자) 윤 홍 란
Chap14 스윙(SWING) 14.1 스윙 컴포넌트 14.2 컴포넌트의 이벤트 처리
Outlook Express 메일 백업 및 복원가이드
제 4 장 클래스 작성 Lab 4- 2.
9장 AWT(1).
명품 JAVA Essential.
Power Java 제19장 배치 관리자(Layout Manager).
명품 JAVA Programming 제 12 장 그래픽.
Chapter 13 GUI 프로그래밍 01 GUI 화면 구성 02 GUI 이벤트 처리 03 GUI 메뉴와 툴바 예제 모음 요약
어서와 Java는 처음이지! 제8장 그래픽 사용자 인터페이스.
19장 스윙과 이벤트 처리 Section 1 스윙 컴포넌트 Section 2 이미지 아이콘과 라벨
Swing 컴포넌트 텍스트 컴포넌트 텍스트 필드 텍스트 영역 스크롤 페인 체크 박스 라디오 버튼.
Lesson 5. 레퍼런스 데이터형.
목 차 1. swing component 특징 및 관련 packages
forms 객체 입력상자 체크상자, 라디오 버튼 목록상자
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
9장 다형성 Lab 9-2.
10장 예외 Lab 10-2.
5장 조건과 반복 ③.
명품 JAVA Essential.
9장 AWT(1).
명품 JAVA Programming 제 15 장 애플릿과 멀티미디어.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
Power Java 제14장 배치 관리자.
학습목표 학습목차 다른 홈페이지의 HTML 파일 코드를 보는 방법에 대해 알아봅니다.
그래픽 사용자 인터페이스와 사건처리.
JAVA Canvas Swing.
10장 tkinter로 GUI 만들기.
30강 JAVA 그래픽 JAVA GUI(Graphic User Interface)란? AWT 컴포넌트? Swing 컴포넌트?
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
Mariadb JDBC PROGRAMMING2
CHAP 21. 전화, SMS, 주소록.
제 4 장 클래스 작성 Lab 4- 2.
Outline 클래스의 해부 캡슐화(Encapsulation) 메쏘드의 해부 그래픽 객체(Graphical Objects)
단축키 기능 1. 단축키 기능 설명 Alt + R 조회 S 저장 I 삽입 A 추가 D 삭제 P 출력 Q 닫기
메뉴(Menu) 컴퓨터응용 및 실습 I.
안드로이드 앱 개발과정 Step1. 기초과정 강사 : 정 훈 희.
01. 분산 파일 시스템의 개요 네트워크에 분산된 파일을 사용자가 쉽게 접근하고 관리할 수 있게 해준다.
Android -Data Base 윤수진 GyeongSang Univ. IT 1.
Power Java 제14장 배치 관리자.
5장 조건과 반복 ③.
Chap18 스윙(SWING) Section 1 : 스윙 컴포넌트 Section 2 : 컴포넌트의 이벤트 처리
BoardGame 보드게임 따라가기.
Presentation transcript:

고급 스윙 컴포넌트

메뉴 만들기 메뉴 만들기에 필요한 스윙 컴포넌트 JMenuBar JMenu JMenuItem 메뉴바의 기능을 하는 컴포넌트 파일, 편집 등 하나의 메뉴 기능을 하는 컴포넌트 JMenuItem 파일 메뉴 내에 저장 등의 세부 기능을 하는 컴포넌트 JMenu 컴포넌트 JMenuBar 컴포넌트 separator JMenuItem 컴포넌트

메뉴 만드는 과정 (1) JMenuBar 컴포넌트 생성 (2) JMenu 컴포넌트를 생성하여 JMenuBar에 붙인다. add add JMenuItem 컴포넌트 JMenu 컴포넌트 JMenu 컴포넌트 JMenu 컴포넌트 JMenu 컴포넌트 (1) JMenuBar 컴포넌트 생성 (2) JMenu 컴포넌트를 생성하여 JMenuBar에 붙인다. (3) JMenuItem 컴포넌트를 생성하여 JMenu에 붙인다. (3’) 여러 개의 메뉴와 메뉴 아이템을 생성한다. JMenuBar mb = new JMenuBar(); JMenu fileMenu = new JMenu("File"); mb.add(fileMenu); fileMenu.add(new JMenuItem("New")); fileMenu.add(new JMenuItem("Open")); fileMenu.addSeparator(); fileMenu.add(new JMenuItem("Save")); fileMenu.add(new JMenuItem("SaveAs")); frame.setJMenuBar(mb); (1) (2) (3) (4) 타이틀바 (4) JMenuBar 컴포넌트를 JFrame에 붙인다.

예제 14-1 : 메뉴 만들기 import javax.swing.*; import java.awt.*; public class MenuEx extends JFrame { MenuEx() { setTitle("Menu 만들기 예제"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); createMenu(); setSize(250,200); setVisible(true); } void createMenu() { JMenuBar mb = new JMenuBar(); JMenu fileMenu = new JMenu("File"); fileMenu.add(new JMenuItem("New")); fileMenu.add(new JMenuItem("Open")); fileMenu.addSeparator(); fileMenu.add(new JMenuItem("Save")); fileMenu.add(new JMenuItem("SaveAs")); mb.add(fileMenu); mb.add(new JMenu("Edit")); mb.add(new JMenu("Source")); mb.add(new JMenu("Project")); mb.add(new JMenu("Run")); this.setJMenuBar(mb); public static void main(String [] args) { new MenuEx();

메뉴에 Action 이벤트 달기 ActionListener 이용 메뉴 아이템에 ActionListener를 다는 예 각 JMenuItem 컴포넌트에 Action 이벤트 리스너 설정 메뉴 아이템이 선택되었을 때 Action 이벤트 리스너 호출 메뉴 아이템에 ActionListener를 다는 예 JMenuItem item = new JMenuItem("Color"); item.addActionListener(new ColorActionListener()); // 메뉴아이템에 Action 리스너 설정fileMenu.add(item); class ColorActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { ... // 사용자가 Color 메뉴아이템을 선택하는 경우 처리할 작업 구현 }

예제 14-2 : 메뉴에 ActionListener 달기 import javax.swing.*; import java.awt.event.*; import java.awt.*; public class MenuActionEventEx extends JFrame { Container contentPane; JLabel label = new JLabel("Hello"); MenuActionEventEx() { setTitle("Menu 만들기 예제"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); contentPane = getContentPane(); label.setHorizontalAlignment(SwingConstants.CENTER); contentPane.add(label, BorderLayout.CENTER); createMenu(); setSize(250,200); setVisible(true); } void createMenu() { JMenuBar mb = new JMenuBar(); JMenuItem [] menuItem = new JMenuItem [4]; String[] itemTitle = {"Color", "Font", "Top", "Bottom"}; JMenu fileMenu = new JMenu("Text"); for(int i=0; i<menuItem.length; i++) { menuItem[i] = new JMenuItem(itemTitle[i]); menuItem[i].addActionListener(new MenuActionListener()); fileMenu.add(menuItem[i]); mb.add(fileMenu); this.setJMenuBar(mb); class MenuActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { String cmd = e.getActionCommand(); if(cmd.equals("Color")) label.setForeground(Color.BLUE); else if(cmd.equals("Font")) label.setFont(new Font("Ravie", Font.ITALIC, 30)); else if(cmd.equals("Top")) label.setVerticalAlignment(SwingConstants.TOP); else label.setVerticalAlignment(SwingConstants.BOTTOM); } public static void main(String [] args) { new MenuActionEventEx();

예제 실행 : 메뉴에 ActionListener 달기 초기상태 Color 메뉴아이템 선택 Font 메뉴아이템 선택 Top 메뉴아이템 선택 Bottom 메뉴아이템 선택

툴바 JToolBar 툴바를 구현한 컴포넌트 툴바의 모양 기능 툴바가 부착되는 위치 여러 컴포넌트를 담을 수 있는 컨테이너 한 행 혹은 한 열로만 표현 기능 버튼이나 이미지 등 모든 컴포넌트를 부착하여 이들을 메뉴처럼 사용 툴바가 부착되는 위치 툴바는 BorderLayout 배치 관리자를 가진 컨테이너에만 부착 상(NORTH), 하(SOUTH), 좌(WEST), 우(EAST) 측의 모서리 중 선택 부착 사용자의 드래그에 의해 위의 4 가지 위치에 이동 부착 가능 사용자의 드래그에 의해 독립적인 다이얼로그 형태로 떨어져서 존재할 수 있음 사용자의 드래그에 의한 이동이 불가능하게 할 수 있음 JButton JToolBar 컴포넌트 툴바의 핸들 separator JLabel JTextField JComboBox

툴바 만들기와 제어 툴바 만드는 과정 툴바 제어 1. JToolBar 객체 생성 컨테이너는 BorderLayout 배치 관리자 툴바 제어 툴바 생성자 JToolBar() JToolBar(String title) 툴바가 윈도우에서 떨어져 나와 독립적으로 존재할 때 툴바의 타이틀로 title 문자열 설정 툴바 드래그 못하게 고정하는 방법 JToolBar.setFloatable(boolean b) b가 true이면 드래그하여 이동 가능한 툴바, false이면 툴바의 핸들이 없어지며 드래그 불가능(이 동 불가능) 툴바에 separator 삽입 JToolBar.addSeparator() JToolBar bar = new JToolBar("Kitae Menu"); bar.add(new JButton("New")); // 버튼 삽입 bar.addSeparator(); // 분리 공간 삽입 bar.add(new JTextField("text field")); // 텍스트필드 삽입 // 컨테이너의 NORTH에 툴바를 삽입한다. container.add(bar, BorderLayout.NORTH);

예제 14-3 : 툴바 만들기 예 초기 컨텐트팬의 NORTH에 부착된 툴바 핸들을 드래그하여 SOUTH로 이동 툴바의 이름 예제 14-3 : 툴바 만들기 예 import javax.swing.*; import java.awt.*; public class ToolBarEx extends JFrame { Container contentPane; ToolBarEx() { setTitle("툴바 만들기 예제"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); contentPane = getContentPane(); createToolBar(); setSize(400,200); setVisible(true); } 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(); 초기 컨텐트팬의 NORTH에 부착된 툴바 핸들을 드래그하여 SOUTH로 이동 툴바의 이름 핸들을 드래그하여 임의의 위치로 이동

툴팁 툴팁 툴팁 생성 스윙 컴포넌트를 설명하는 팁 문구 컴포넌트 위에 마우스를 올리면 잠깐 나타났다가 사라짐 팁 문구는 문자열만 가능 컴포넌트 위에 마우스를 올리면 잠깐 나타났다가 사라짐 툴팁 생성 JToolTip 클래스 이용(복잡하므로 권하지 않음) JComponent.setToolTipText(String msg) 이용 : 권장 툴팁 // 버튼에 툴팁을 다는 예 JButton b = new JButton("open"); b.setToolTipText("클릭하면 파일을 엽니다");

예제 14-4 : 툴팁 달기 import javax.swing.*; import java.awt.*; public class ToolTipEx extends JFrame { Container contentPane; ToolTipEx() { setTitle("툴팁 예제"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); contentPane = getContentPane(); createToolBar(); setSize(400,200); setVisible(true); } 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();

툴팁 활성화 및 툴팁 지연 시간 제어 ToolTipManager 클래스 이용 툴팁 매니저 객체 생성 툴팁 활성화/비활성화 툴팁 제어 기능은 모든 툴팁에 일괄 적용 툴팁 매니저 객체 생성 툴팁 활성화/비활성화 툴팁이 나타나는 최초 지연시간 제어 툴팁이 켜져 있는 지연 시간 제어 ToolTipManager m = ToolTipManager.sharedInstance(); m.setEnabled(false); // 툴팁이 보이지 않게 함 m.setInitialDelay(1000) // 마우스가 올라온 후 1000 ms 후에 툴팁 출력 m.setDismissDelay(1000) // 툴팁이 켜져 있는 지속 시간을 1000ms로 설정

예제 14-5 : 툴팁 지연 시간 제어 마우스를 올리자마자 툴팁이 나타나고, 10초간 지속된다. import javax.swing.*; import java.awt.*; public class ToolTipDelayEx extends JFrame { Container contentPane; ToolTipDelayEx() { setTitle("툴팁 지연 시간 제어 예제"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); contentPane = getContentPane(); contentPane.setLayout(new FlowLayout()); JLabel cherryLabel = new JLabel(new ImageIcon("images/cherry.jpg")); cherryLabel.setToolTipText("체리 이미지 어때요"); JLabel appleLabel = new JLabel(new ImageIcon("images/apple.jpg")); appleLabel.setToolTipText("사과 이미지 어때요"); contentPane.add(cherryLabel); contentPane.add(appleLabel); ToolTipManager m = ToolTipManager.sharedInstance(); m.setInitialDelay(0); m.setDismissDelay(10000); setSize(400,200); setVisible(true); } public static void main(String [] args) { new ToolTipDelayEx(); 마우스를 올리자마자 툴팁이 나타나고, 10초간 지속된다.

다이얼로그 만들기 다이얼로그란? JDialog 300x300 크기의 다이얼로그를 만드는 간단한 코드 사용자로부터 입력을 받기 위한 대화 상자 JDialog 스윙에서 다이얼로그를 만들기 위한 슈퍼 클래스 최상위 컨테이너(top-level container) 다른 컨테이너에 속할 필요 없이 화면에 출력 가능한 컨테이너 300x300 크기의 다이얼로그를 만드는 간단한 코드 JDialog dialog = new JDialog(); dialog.setTitle("나의 다이얼로그"); dialog.add(new JButton("click!")); dialog.setSize(200,200); dialog.setVisible(true);

예제 14-6 : JDialog를 상속받아 다이얼로그 만들기 import java.awt.*; import java.awt.event.*; import javax.swing.*; class MyDialog extends JDialog { JTextField tf = new JTextField(10); JButton okButton = new JButton("OK"); public MyDialog(JFrame frame, String title) { super(frame,title); setLayout(new FlowLayout()); add(tf); add(okButton); setSize(200, 100); okButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { setVisible(false); } }); public class DialogEx extends JFrame{ setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); MyDialog dialog = new MyDialog(this, "Test Dialog"); public DialogEx() { super("DialogEx 예제 프레임"); JButton btn = new JButton("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(); 버튼을 선택하면 “Test Dialog” 다이얼로그가 생성된다. 다이얼로그의 타이틀 MyDialog로 만든 다이얼로그

모달 다이얼로그와 모달리스 다이얼로그 모달(modal) 다이얼로그 모달리스 다이얼로그 사용자 입력을 독점하는 다이얼로그 닫기 전에는 다른 창에서 작업을 전혀 할 수 없는 다이얼로그 생성 방법 JDialog(Frame owner, String title, boolean modal) 생성자에서 modal을 true 값으로 지정 모달리스 다이얼로그 다른 창과 독립적으로 작동하는 다이얼로그

예제 14-7: 모달 다이얼로그로부터 사용자의 입력 값 알아내기 import java.awt.*; import java.awt.event.*; import javax.swing.*; class MyModalDialog extends JDialog { JTextField tf = new JTextField(10); JButton okButton = new JButton("OK"); public MyModalDialog(JFrame frame, String title) { super(frame,title, true); // 모달 다이얼로그로 설정 setLayout(new FlowLayout()); add(tf); add(okButton); setSize(200, 100); okButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { setVisible(false); } }); String getInput() { if(tf.getText().length() == 0) return null; else return tf.getText(); public class DialogEx2 extends JFrame { MyModalDialog dialog = new MyModalDialog(this, "Test Modal Dialog"); public DialogEx2() { super("DialogEx2 예제 프레임"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JButton btn = new JButton("Show Modal Dialog"); btn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { dialog.setVisible(true); // 모달 다이얼로그 이므로 setVisible() 메소드는 // 다이얼로그가 닫힐 때까지 리턴하지 않는다. 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();

예제 실행 버튼을 선택하면 “Test Modal Dialog” 다이얼로그가 생성된다. 사용자가 “Press Me!!”라고 입력한 후 OK 버튼을 누르면 “Show Modal Dialog” 버튼의 문자열이 변경된다.

팝업 다이얼로그, JOptionPane JOptionPane 입력 다이얼로그 - 한 줄을 입력 받는 다이얼로그 간단하고 유용한 팝업 다이얼로그 지원 static 의 타입의 간단한 메소드 이용. 간단히 다이얼로그 출력 가능 입력 다이얼로그 - 한 줄을 입력 받는 다이얼로그 String JOptionPane.showInputDialog(String msg) msg : 다이얼로그의 객체 리턴값 : 사용자가 입력한 문자열 확인 다이얼로그 – 사용자로부터 Yes/No 응답을 입력 받는 다이얼로그 int JOptionPane.showConfirmDialog(Component parentComponent, Object msg, String title, int optionType) parentComponent는 다이얼로그가 출력되는 영역의 범위로서 프레임. null 이면 화면 전체의 중앙에 출력 msg : 다이얼로그에 출력될 객체 title : 다이얼로그의 타이틀 문자열 optionType : 다이얼로그의 종류 지정 - YES_ON_OPTION, YES_NO_CANCEL_OPTION, OK_CANCEL_OPTION 리턴값 : 사용자가 선택한 옵션 - YES_OPTION, NO_OPTION, CANCEL_OPTION, OK_OPTION, CLOSED_OPTION 메시지 다이얼로그 – 단순 메시지를 출력하는 다이얼로그 void JOptionPane.showMessageDialog(Component parentComponent, Object msg, String title, int messageType) parentComponent, msg, title은 showConfirmDialog() 메소드와 동일 messageType - ERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGGE, QUSTION_MESSAGE, PLAIN_MESSAGE

JOptionPane 팝업 다이얼로그와 코드 샘플 String name = JOptionPane.showInputDialog("이름을 입력하세요."); // name에 “Java Kim” 리턴 // 사용자가 입력 없이 창을 닫으면 null 리턴 int result = JOptionPane.showConfirmDialog(null, "계속할 것입니까?", "Confirm", JOptionPane.YES_NO_OPTION); if(result == JOptionPane.CLOSED_OPTION) { // 사용자가 "예"나 "아니오"의 선택없이 다이얼로그 창을 닫은 경우 } else if(result == JOptionPane.YES_OPTION) { // 사용자가 "예"를 선택한 경우 else { // 사용자가 "아니오"를 선택한 경우 옵션 (JOptionPane.YES_NO_OPTION) JOptionPane.showMessageDialog(null, "조심하세요", "Message", JOptionPane.ERROR_MESSAGE);

예제 14-8 : JOptionPane을 사용한 팝업 다이얼로그 작성 inputBtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String name = JOptionPane.showInputDialog("이름을 입력하세요."); if(name != null) tf.setText(name); } }); confirmBtn.addActionListener(new ActionListener() { 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() { JOptionPane.showMessageDialog(null, "조심하세요", "Message", JOptionPane.ERROR_MESSAGE); public static void main(String [] args) { new OptionPaneEx(); import javax.swing.*; import java.awt.event.*; import java.awt.*; public class OptionPaneEx extends JFrame { Container contentPane; OptionPaneEx() { setTitle("옵션 팬 예제"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); contentPane = getContentPane(); setSize(250,200); contentPane.add(new MyPanel(), BorderLayout.NORTH); setVisible(true); } class MyPanel extends Panel { JButton inputBtn = new JButton("Input Name"); JTextField tf = new JTextField(10); JButton confirmBtn = new JButton("Confirm"); JButton messageBtn = new JButton("Message"); MyPanel() { setBackground(Color.LIGHT_GRAY); add(inputBtn); add(confirmBtn); add(messageBtn); add(tf);

예제 실행 초기 화면 Input Name 버튼을 누르는 경우 입력 다이얼로그 생성 "Java Kim"을 입력하고 확인 버튼을 누르면 텍스트필드 창에 출력 Confirm 버튼을 누르면 확인 다이얼로그 생성 "예" 버튼을 누르면 텍스트필드 창에 "Yes" 출력 Message 버튼을 누르면 메시지 다이얼로그 생성 "확인" 버튼을 누르면 다이얼로그 종료

파일 다이얼로그 JFileChooser 주의 사항 파일 시스템의 탐색기와 같은 기능을 하는 다이얼로그 사용자에게 파일이나 디렉터리를 쉽게 선택하도록 하는 기능 다이얼로그 종류 파일 열기 다이얼로그(File Open Dialog) 파일 저장 다이얼로그(File Save Dialog) 주의 사항 파일 다이얼로그에서 사용자가 파일을 선택하는 행위란? 사용자가 선택한 파일 이름을 얻기 위함 파일을 읽거나 쓰는 행위가 아님 다이얼로그 닫기란? 다이얼로그가 화면에서 보이지 않게 됨. JFileChooser 객체가 없어지거나 사용할 수 없게 것이 아님 showOpenDialog() 메소드를 호출하면 다시 화면에 출력하고 재사용 가능 다이얼로그가 닫힌 후 JFileChooser 객체로부터 사용자가 입력한 정보를 알아낼 수 있음

JFileChooser 파일 다이얼로그, 코드 샘플 파일 열기 다이얼로그 생성 과정 1.JFileChooser 객체 생성 JFileChooser chooser = new JFileChooser(); 2. 파일 필터 객체 생성 FileNameExtensionFilter filter = new FileNameExtensionFilter( "JPG & GIF", "jpg", "gif"); 3. JFileChooser에 파일 필터 설정 chooser.setFileFilter(filter); 생략가능 4. 열기 다이얼로그 출력 int ret = chooser.showOpenDialog(null); 5. 사용자가 선택한 파일 이름 알아내기 if(ret == JFileChooser.APPROVE_OPTION) { String pathName = chooser.getSelectedFile().getPath(); String fileName = chooser.getSelectedFile().getName(); } 파일 저장 다이얼로그 생성 과정 int ret = chooser.showSaveDialog(null);

예제 14-9 : 파일 열기 다이얼로그 생성 및 출력 import javax.swing.*; import javax.swing.filechooser.*; import java.awt.event.*; import java.awt.*; public class MenuAndFileDialogEx extends JFrame { Container contentPane; JLabel imageLabel = new JLabel(); MenuAndFileDialogEx() { setTitle("Menu와 JFileChooser 활용 예제"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); contentPane = getContentPane(); contentPane.add(imageLabel); createMenu(); setSize(250,200); setVisible(true); } void createMenu() { JMenuBar mb = new JMenuBar(); JMenu fileMenu = new JMenu("File"); JMenuItem openItem = new JMenuItem("Open"); openItem.addActionListener( new OpenActionListener()); fileMenu.add(openItem); mb.add(fileMenu); this.setJMenuBar(mb); class OpenActionListener implements ActionListener { JFileChooser chooser; 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();

예제 실행

컬러 다이얼로그 JColorChooser 색상 팔레트를 제공하는 모달 다이얼로그 컬러 다이얼로그 생성 과정 JColorChooser chooser = new JColorChooser(); 2.컬러 다이얼로그 출력 Color selectedColor = chooser.showDialog(null, "Color", Color.YELLOW); // 사용자가 “확인” 버튼을 누르면 선택한 색을 리턴하지만 //사용자가 “취소” 버튼이나 다이얼로그를 강제로 닫을 때 // null 리턴 3.사용자가 색을 선택하였는지 확인 if(selectedColor != null) { // 사용자가 선택한 색 selectedColor 사용 }

예제 14-10 : JColorChooser를 이용한 컬러 다이얼로그 사용 import javax.swing.*; import java.awt.event.*; import java.awt.*; public class MenuAndColorChooserEx extends JFrame { Container contentPane; JLabel label = new JLabel("Hello"); MenuAndColorChooserEx() { setTitle("JColorChooser 예제"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); contentPane = getContentPane(); label.setHorizontalAlignment(SwingConstants.CENTER); label.setFont(new Font("Ravie", Font.ITALIC, 30)); contentPane.add(label, BorderLayout.CENTER); createMenu(); setSize(250,200); setVisible(true); } void createMenu() { JMenuBar mb = new JMenuBar(); JMenuItem colorMenuItem = new JMenuItem("Color"); JMenu fileMenu = new JMenu("Text"); colorMenuItem.addActionListener(new MenuActionListener()); fileMenu.add(colorMenuItem); mb.add(fileMenu); this.setJMenuBar(mb); class MenuActionListener implements ActionListener { JColorChooser chooser = new JColorChooser(); public void actionPerformed(ActionEvent e) { String cmd = e.getActionCommand(); if(cmd.equals("Color")) { Color selectedColor = chooser.showDialog(null, "Color", Color.YELLOW); if(selectedColor != null) label.setForeground(selectedColor); } public static void main(String [] args) { new MenuAndColorChooserEx();

예제 실행 사용자가 빨간색 선택

탭팬 JTabbedPane 여러 패널을 겹치게 하여 공간을 공유하도록 지원하는 팬 생성자 JTabbedPane() JTabbedPane(int tabPlacement) tabPlacement : JTabbedPane.TOP, JTabbedPane.BOTTOM, JTabbedPane.LEFT, JTabbedPane.RIGHT 3 개의 탭을 가진 JTabbedPane 탭 위치(tabPlacement)가 JTabbedPane.LEFT인경우

탭팬 주요 메소드 탭 만들어 탭팬에 붙이기 탭팬에 붙은 탭의 개수 현재 선택된 탭 탭 삭제 탭 위치 변경 void addTab(String title, Component comp) title : 탭의 이름, comp : 탭을 구성하는 컴포넌트 탭팬에 붙은 탭의 개수 int getTabCount() - 탭팬에 붙은 탭의 개수 리턴 현재 선택된 탭 int getSelectedIndex() Component getSelectedComponent() 탭 삭제 void remove(Component comp) void remove(int index) void removeTabAt(int index) 탭 위치 변경 void setTabPlacement(int tabPlacement) 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);

예제 14-11 : 탭팬 만들기 import javax.swing.*; import java.awt.*; public class TabbedPaneEx extends JFrame { Container contentPane; TabbedPaneEx() { setTitle(“탭팬 만들기 예제"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); contentPane = getContentPane(); JTabbedPane pane = createTabbedPane(); contentPane.add(pane, BorderLayout.CENTER); setSize(250,200); setVisible(true); } JTabbedPane createTabbedPane() { 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()); return pane; class MyPanel extends JPanel { MyPanel() { this.setBackground(Color.YELLOW); public void paintComponent(Graphics g) { super.paintComponent(g); g.setColor(Color.RED); g.fillRect(10,10,50,50); g.setColor(Color.BLUE); g.fillOval(10,70,50,50); g.setColor(Color.BLACK); g.drawString("tab 3에 들어가는 JPanel 입니다.", 30, 50); public static void main(String [] args) { new TabbedPaneEx();