GUI 환경에서 작동하는 프로그램에 대하여 윈도우 프로그램의 작성 방법 그래픽과 이미지 디스플레이 방법 오디오 파일 재생 방법

Slides:



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

목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
12. GUI – 그래픽 이야기.
명품 JAVA Essential.
어서와 Java는 처음이지! 제20장 실전프로젝트 #2.
그래픽 프로그래밍 (GUI - Graphic User Interface)
Ch.22 Command Pattern 장 덕 성 계명대학교 컴퓨터공학과 정보공학실험실
GUI 이벤트, 이벤트 리스너와 이벤트 소스 그림 그리기 내부 클래스
149개의 실습예제로 배우는 Flash 8.
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
Image & Video processing
최윤정 Java 프로그래밍 클래스 상속 최윤정
레이아웃 관리자 스윙 구성요소 비트박스 프로그램
명품 JAVA Programming 제 13 장 스레드와 멀티태스킹.
컴퓨터 프로그래밍 실습 #7 제 4 장 GUI 클래스 작성.
명품 JAVA Essential.
명품 JAVA Programming.
Outlook Express 메일 백업 및 복원가이드
Kim heesang JDBC Programming 2 Kim heesang
제 4 장 클래스 작성 Lab 4- 2.
9장 AWT(1).
Power Java 제19장 배치 관리자(Layout Manager).
명품 JAVA Programming 제 12 장 그래픽.
Chapter 13 GUI 프로그래밍 01 GUI 화면 구성 02 GUI 이벤트 처리 03 GUI 메뉴와 툴바 예제 모음 요약
어서와 Java는 처음이지! 제8장 그래픽 사용자 인터페이스.
Choi Younghwan CSE HUFS
19장 스윙과 이벤트 처리 Section 1 스윙 컴포넌트 Section 2 이미지 아이콘과 라벨
Swing 컴포넌트 텍스트 컴포넌트 텍스트 필드 텍스트 영역 스크롤 페인 체크 박스 라디오 버튼.
프로그래밍 개론 Ⅰ 제 3장. 클래스와 객체의 사용 ②.
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
9장 다형성 Lab 9-2.
10장 예외 Lab 10-2.
Lesson 9. 예외처리.
5장 조건과 반복 ③.
명품 JAVA Essential.
9장 AWT(1).
명품 JAVA Programming 제 15 장 애플릿과 멀티미디어.
1. C++ 시작하기.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
iframe 사용하기 Chapter 3 Part 2
패키지와 접근 제어 패키지에 대하여 접근 제어에 대하여.
Power Java 제14장 배치 관리자.
학습목표 학습목차 다른 홈페이지의 HTML 파일 코드를 보는 방법에 대해 알아봅니다.
ASP.NET AJAX 비동기 게시판 작성 2007 컴퓨터공학실험( I )
그래픽 사용자 인터페이스와 사건처리.
컴퓨터 프로그래밍 실습 #6 제 4 장 클래스 작성.
JAVA Canvas Swing.
자바응용.
10장 tkinter로 GUI 만들기.
30강 JAVA 그래픽 JAVA GUI(Graphic User Interface)란? AWT 컴포넌트? Swing 컴포넌트?
1. 설치 2. SPC_Wave 사용설명 SPC_Reflow 사용방법은 Wave와 같습니다.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
ASP.NET AJAX / AJAX Control Toolkit 응용 2008 컴퓨터공학실험( I )
1차시: 낮과 밤이 생기는 원리 지구과학
자바 5.0 프로그래밍.
JA A V W. 06.
Mariadb JDBC PROGRAMMING2
CHAP 21. 전화, SMS, 주소록.
11. 어댑터뷰 제목. 11. 어댑터뷰 제목 리스트뷰와 그리드뷰 활용법을 배운다. 갤러리와 스피너의 사용법을 익힌다.
제 4 장 클래스 작성 Lab 4- 2.
Outline 클래스의 해부 캡슐화(Encapsulation) 메쏘드의 해부 그래픽 객체(Graphical Objects)
단축키 기능 1. 단축키 기능 설명 Alt + R 조회 S 저장 I 삽입 A 추가 D 삭제 P 출력 Q 닫기
안드로이드 앱 개발과정 Step1. 기초과정 강사 : 정 훈 희.
안드로이드 앱 개발과정 Step1. 기초과정 강사 : 정 훈 희.
기초C언어 제2주 실습 프로그래밍의 개념, 프로그램 작성 과정 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원
Android -Data Base 윤수진 GyeongSang Univ. IT 1.
Power Java 제14장 배치 관리자.
5장 조건과 반복 ③.
7 생성자 함수.
6 객체.
Presentation transcript:

GUI 환경에서 작동하는 프로그램에 대하여 윈도우 프로그램의 작성 방법 그래픽과 이미지 디스플레이 방법 오디오 파일 재생 방법

01. GUI 환경에서 작동하는 프로그램 GUI 프로그래밍 윈도우 프로그램에 대하여 • 텍스트 모드 프로그램과 윈도우 프로그램 a) 텍스트 모드의 프로그램 b) 윈도우 프로그램

01. GUI 환경에서 작동하는 프로그램 GUI 프로그래밍 윈도우 프로그램에 대하여 • 텍스트 모드 프로그램과 윈도우 프로그램의 구조적 차이

GUI 프로그래밍 02. 윈도우 프로그램의 작성 방법 윈도우 프로그램의 구조 • 네 단계로 실행되는 윈도우 프로그램

02. 윈도우 프로그램의 작성 방법 GUI 프로그래밍 윈도우의 구성요소 • 윈도우의 기본적인 구성요소 • 컴포넌트(component) 프레임, 타이틀 바, content pane, 라벨 등의 구성요소를 통틀어 이르는 용어 타이틀 바(title bar) 프레임(frame) content pane 라벨(label)

02. 윈도우 프로그램의 작성 방법 GUI 프로그래밍 윈도우의 구성요소 • 컴포턴트들이 겹쳐진 층으로 구성되는 윈도우 프레임 타이틀 바 content pane Hello, Java 라벨

GUI 프로그래밍 02. 윈도우 프로그램의 작성 방법 윈도우를 구성하는 방법 • 프레임 만드는 방법

GUI 프로그래밍 02. 윈도우 프로그램의 작성 방법 윈도우를 구성하는 방법 • 타이틀이 표시된 프레임 만드는 방법

GUI 프로그래밍 02. 윈도우 프로그램의 작성 방법 윈도우를 구성하는 방법 • 라벨 만드는 방법

02. 윈도우 프로그램의 작성 방법 GUI 프로그래밍 윈도우를 구성하는 방법 • 프레임에 종속된 content pane을 가져오는 방법

02. 윈도우 프로그램의 작성 방법 GUI 프로그래밍 윈도우를 구성하는 방법 • content pane 위에 라벨을 올려놓는 방법

GUI 프로그래밍 02. 윈도우 프로그램의 작성 방법 윈도우를 디스플레이하는 방법 • 프레임을 적절한 크기로 조정하는 방법

GUI 프로그래밍 02. 윈도우 프로그램의 작성 방법 윈도우를 디스플레이하는 방법 • 프레임을 디스플레이하는 방법

02. 윈도우 프로그램의 작성 방법 GUI 프로그래밍 윈도우로 작동하는 Hello, Java 프로그램 모니터 화면 프로그램을 컴파일해서 실행하면 바탕화면 왼쪽 상단에 윈도우가 나타납니다 1 2 3 4 5 6 7 8 9 10 11 12 import java.awt.*; import javax.swing.*; class WindowExample1 { public static void main(String[] args) { JFrame frame = new JFrame("Hello Java Program"); Container contentPane = frame.getContentPane(); JLabel label = new JLabel("Hello, Java"); contentPane.add(label); frame.pack(); frame.setVisible(true); } 1단계: 윈도우를 구성한다. 2단계: 윈도우를 디스플레이한다

GUI 프로그래밍 02. 윈도우 프로그램의 작성 방법 Hello, Java 프로그램 완성하기 • 윈도우의 위치를 지정하는 방법

02. 윈도우 프로그램의 작성 방법 GUI 프로그래밍 모니터상의 좌표 체계 (0, 0) X 좌표는 왼쪽에서 오른쪽으로 증가 좌표는 위에서 아래로 증가 모니터 화면

GUI 프로그래밍 02. 윈도우 프로그램의 작성 방법 Hello, Java 프로그램 완성하기 • 프레임의 크기를 바꾸는 방법

GUI 프로그래밍 02. 윈도우 프로그램의 작성 방법 Hello, Java 프로그램 완성하기 • 라벨의 위치를 지정하는 방법

02. 윈도우 프로그램의 작성 방법 GUI 프로그래밍 Hello, Java 프로그램 완성하기 • 버튼을 눌렀을 때 윈도우가 닫히도록 만드는 방법

02. 윈도우 프로그램의 작성 방법 GUI 프로그래밍 Hello, Java 프로그램 완성하기 모니터 화면 프로그램을 실행하면 바탕화면 중앙에 윈도우가 나타납니다 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 import java.awt.*; import javax.swing.*; class WindowExample1 { public static void main(String[] args) { JFrame frame = new JFrame("Hello Java Program"); frame.setLocation(500, 400); frame.setPreferredSize(new Dimension(300, 200)); Container contentPane = frame.getContentPane(); JLabel label = new JLabel("Hello, Java", SwingConstants.CENTER); contentPane.add(label); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setVisible(true); } 프레임의 위치와 크기를 지정합니다. 라벨의 텍스트를 중앙에 표시 버튼을 눌렀을 때 해야할 일을 지정

02. 윈도우 프로그램의 작성 방법 GUI 프로그래밍 텍스트 상자와 버튼 • 지금부터 작성할 예제의 윈도우 텍스트 상자 버튼 라벨

GUI 프로그래밍 02. 윈도우 프로그램의 작성 방법 텍스트 상자와 버튼 • 텍스트 상자를 만드는 방법

GUI 프로그래밍 02. 윈도우 프로그램의 작성 방법 텍스트 상자와 버튼 • 버튼을 만드는 방법

02. 윈도우 프로그램의 작성 방법 GUI 프로그래밍 텍스트 상자와 버튼 • 여러 개의 컴포넌트를 content pane 위에 올려놓는 방법 – 잘못된 예 이렇게 하면 마지막에 추가된 라벨만 보이게 됩니다 contentPane.add(text); contentPane.add(button); contentPane.add(label);

02. 윈도우 프로그램의 작성 방법 GUI 프로그래밍 텍스트 상자와 버튼 • content pane의 기본 레이아웃 – border layout

02. 윈도우 프로그램의 작성 방법 GUI 프로그래밍 텍스트 상자와 버튼 • 여러 개의 컴포넌트를 content pane 위에 올려놓는 방법 – 올바른 예 contentPane.add(text, BorderLayout.CENTER); contentPane.add(button, BorderLayout.EAST); contentPane.add(label, BorderLayout.SOUTH); 이렇게 배치됩니다

02. 윈도우 프로그램의 작성 방법 GUI 프로그래밍 텍스트 상자와 버튼 [예제 19-3] 텍스트 상자와 버튼이 있는 Hello 프로그램 (미완성) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 import java.awt.*; import javax.swing.*; class WindowExample2 { public static void main(String[] args) { JFrame frame = new JFrame("Hello Program"); frame.setPreferredSize(new Dimension(200, 70)); frame.setLocation(500, 400); Container contentPane = frame.getContentPane(); JTextField text = new JTextField(); JButton button = new JButton("확인"); JLabel label = new JLabel("Hello"); contentPane.add(text, BorderLayout.CENTER); contentPane.add(button, BorderLayout.EAST); contentPane.add(label, BorderLayout.SOUTH); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setVisible(true); } 1단계: 윈도우를 구성한다 2단계: 윈도우를 디스플레이한다

GUI 프로그래밍 02. 윈도우 프로그램의 작성 방법 버튼 이벤트의 처리 방법 • 텍스트 상자의 텍스트를 가져오는 방법

GUI 프로그래밍 02. 윈도우 프로그램의 작성 방법 버튼 이벤트의 처리 방법 • 라벨에 텍스트를 표시하는 방법

GUI 프로그래밍 02. 윈도우 프로그램의 작성 방법 버튼 이벤트의 처리 방법 • 버튼을 눌렀을 때 해야할 일을 기술하는 방법

02. 윈도우 프로그램의 작성 방법 GUI 프로그래밍 버튼 이벤트의 처리 방법 • 버튼을 눌렀을 때 actionPerformed 메소드가 호출되도록 만드는 방법

02. 윈도우 프로그램의 작성 방법 GUI 프로그래밍 버튼 이벤트의 처리 방법 [예제 19-4] 텍스트 상자와 버튼이 있는 Hello 프로그램 (완성) main 메소드를 포함하는 클래스 확인 버튼을 처리하는 리스너 클래스 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 import java.awt.*; import javax.swing.*; import java.awt.event.*; class WindowExample2 { public static void main(String[] args) { JFrame frame = new JFrame("Hello Program"); frame.setPreferredSize(new Dimension(200, 70)); frame.setLocation(500, 400); Container contentPane = frame.getContentPane(); JTextField text = new JTextField(); JButton button = new JButton("확인"); JLabel label = new JLabel("Hello"); contentPane.add(text, BorderLayout.CENTER); contentPane.add(button, BorderLayout.EAST); contentPane.add(label, BorderLayout.SOUTH); ActionListener listener = new ConfirmButtonActionListener(text, label); button.addActionListener(listener); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setVisible(true); } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 import javax.swing.*; import java.awt.event.*; class ConfirmButtonActionListener implements ActionListener { JTextField text; JLabel label; ConfirmButtonActionListener(JTextField text, JLabel label) { this.text = text; this.label = label; } public void actionPerformed(ActionEvent e) { String name = text.getText(); label.setText("Hello, " + name); 텍스트 상자에 “선희”라고 입력하고 확인 버튼을 눌렀을 때 텍스트 상자에 “기영”이라고 입력하고 확인 버튼을 눌렀을 때

GUI 프로그래밍 02. 윈도우 프로그램의 작성 방법 레이아웃과 패널 • 자주 사용되는 레이아웃들

GUI 프로그래밍 02. 윈도우 프로그램의 작성 방법 레이아웃과 패널 • content pane의 레이아웃을 설정하는 방법

02. 윈도우 프로그램의 작성 방법 GUI 프로그래밍 레이아웃과 패널 • content pane의 레이아웃을 설정하는 방법 (계속)

02. 윈도우 프로그램의 작성 방법 GUI 프로그래밍 레이아웃과 패널 [예제 19-5] 여러 가지 레이아웃을 사용하는 프로그램들 grid layout을 사용하는 프로그램 flow layout을 사용하는 프로그램 box layout을 사용하는 프로그램 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 import java.awt.*; import javax.swing.*; class WindowExample3 { public static void main(String[] args) { JFrame frame = new JFrame("Zoo Program"); frame.setLocation(500, 400); Container contentPane = frame.getContentPane(); GridLayout layout = new GridLayout(3, 2); contentPane.setLayout(layout); contentPane.add(new JButton("얼룩말")); contentPane.add(new JButton("사자")); contentPane.add(new JButton("코끼리")); contentPane.add(new JButton("코뿔소")); contentPane.add(new JButton("펭귄")); contentPane.add(new JButton("하이에나")); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setVisible(true); } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 import java.awt.*; import javax.swing.*; class WindowExample4 { public static void main(String[] args) { JFrame frame = new JFrame("Fruit Basket Program"); frame.setLocation(500, 400); Container contentPane = frame.getContentPane(); FlowLayout layout = new FlowLayout(); contentPane.setLayout(layout); contentPane.add(new JButton("사과")); contentPane.add(new JButton("파인애플")); contentPane.add(new JButton("오렌지")); contentPane.add(new JButton("포도")); contentPane.add(new JButton("레몬")); contentPane.add(new JButton(“복숭아")); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setVisible(true); } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 import java.awt.*; import javax.swing.*; class WindowExample5 { public static void main(String[] args) { JFrame frame = new JFrame("Cafe Program"); frame.setLocation(500, 400); Container contentPane = frame.getContentPane(); BoxLayout layout = new BoxLayout(contentPane, BoxLayout.X_AXIS); contentPane.setLayout(layout); contentPane.add(new JButton("자바")); contentPane.add(new JButton("에스프레소")); contentPane.add(new JButton("카푸치노")); contentPane.add(new JButton("블루마운틴")); contentPane.add(new JButton("콜럼비아")); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setVisible(true); }

02. 윈도우 프로그램의 작성 방법 GUI 프로그래밍 레이아웃과 패널 • 다음과 같은 윈도우는 어떤 레이아웃을 이용해서 만들 수 있을까요? 패널(panel)을 만들어서 content pane 위에 올려놓고 그 위에 컴포넌트를 올려놓으면 됩니다.

02. 윈도우 프로그램의 작성 방법 GUI 프로그래밍 레이아웃과 패널 • 패널을 이용하여 복합적인 레이아웃을 설정하는 방법 1) 패널을 생성해서 content pane 위에 추가합니다.

02. 윈도우 프로그램의 작성 방법 GUI 프로그래밍 레이아웃과 패널 • 패널을 이용하여 복합적인 레이아웃을 설정하는 방법 2) 패널의 레이아웃을 설정합니다.

02. 윈도우 프로그램의 작성 방법 GUI 프로그래밍 레이아웃과 패널 • 패널을 이용하여 복합적인 레이아웃을 설정하는 방법 3) add 메소드를 이용하여 패널 위에 컴포넌트를 추가합니다.

02. 윈도우 프로그램의 작성 방법 GUI 프로그래밍 레이아웃과 패널 [예제 19-6] JPanel의 사용 예를 보여주는 프로그램 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 import java.awt.*; import javax.swing.*; class WindowExample6 { public static void main(String[] args) { JFrame frame = new JFrame("연락처 프로그램"); frame.setPreferredSize(new Dimension(250, 150)); frame.setLocation(500, 400); Container contentPane = frame.getContentPane(); JPanel panel = new JPanel(); panel.setLayout(new GridLayout(3, 2)); JTextField text1 = new JTextField(); JTextField text2 = new JTextField(); JTextField text3 = new JTextField(); panel.add(new JLabel("이름")); panel.add(text1); panel.add(new JLabel("주소")); panel.add(text2); panel.add(new JLabel("전화번호")); panel.add(text3); contentPane.add(panel, BorderLayout.CENTER); contentPane.add(new JButton("입력"), BorderLayout.SOUTH); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setVisible(true); } 패널을 생성합니다 패널의 레이아웃을 설정합니다 컴포넌트를 생성해서 패널에 추가합니다 패널을 content pane에 추가합니다

GUI 프로그래밍 02. 윈도우 프로그램의 작성 방법 테이블 • 지금부터 작성할 예제의 윈도우 테이블 버튼

GUI 프로그래밍 02. 윈도우 프로그램의 작성 방법 테이블 • 테이블을 만드는 방법 1) 테이블을 생성합니다.

02. 윈도우 프로그램의 작성 방법 GUI 프로그래밍 테이블 • 테이블을 만드는 방법 2) 스크롤 판을 만들어서 테이블을 올려놓고, 그 스크롤 판을 content pane 위에 올려놓습니다.

02. 윈도우 프로그램의 작성 방법 GUI 프로그래밍 테이블 [예제 19-7] 테이블이 있는 윈도우 프로그램 (미완성) 1 2 초기 상태 02. 윈도우 프로그램의 작성 방법 테이블 [예제 19-7] 테이블이 있는 윈도우 프로그램 (미완성) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 import java.awt.*; import javax.swing.*; class WindowExample7 { public static void main(String[] args) { JFrame frame = new JFrame("참가자 명단 프로그램"); frame.setPreferredSize(new Dimension(300, 150)); frame.setLocation(500, 400); Container contentPane = frame.getContentPane(); String colNames[] = { "이름", "나이", "성별" }; Object data[][] = { { "김철수", 24, '남' }, { "이순희", 21, '여' }, { "박지영", 26, '여' } }; JTable table = new JTable(data, colNames); JScrollPane scrollPane = new JScrollPane(table); contentPane.add(scrollPane, BorderLayout.CENTER); JButton button = new JButton("출력"); contentPane.add(button, BorderLayout.SOUTH); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setVisible(true); } 크기를 줄이면 스크롤 바가 나타납니다

02. 윈도우 프로그램의 작성 방법 GUI 프로그래밍 테이블에 있는 정보 가져오기 • 테이블의 데이터는 JTable 객체가 아닌 별도의 객체에 저장됨 모델(model)

GUI 프로그래밍 02. 윈도우 프로그램의 작성 방법 테이블에 있는 정보 가져오기 • 테이블의 모델을 가져오는 방법

GUI 프로그래밍 02. 윈도우 프로그램의 작성 방법 테이블에 있는 정보 가져오기 • 모델의 데이터를 가져오거나 바꾸는 방법

GUI 프로그래밍 02. 윈도우 프로그램의 작성 방법 테이블에 있는 정보 가져오기 • 모델로부터 테이블 정보를 가져오는 방법

02. 윈도우 프로그램의 작성 방법 GUI 프로그래밍 테이블에 있는 정보 가져오기 출력 버튼을 누르면 명령 프롬프트 창으로 테이블 내용이 출력됩니다 GUI 프로그래밍 02. 윈도우 프로그램의 작성 방법 테이블에 있는 정보 가져오기 [예제 19-8] 테이블이 있는 윈도우 프로그램 (완성) main 메소드를 포함하는 클래스 출력 버튼을 처리하는 리스너 클래스 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 import java.awt.*; import javax.swing.*; class WindowExample7 { public static void main(String[] args) { JFrame frame = new JFrame("참가자 명단 프로그램"); frame.setPreferredSize(new Dimension(300, 150)); frame.setLocation(500, 400); Container contentPane = frame.getContentPane(); String colNames[] = { "이름", "나이", "성별" }; Object data[][] = { { "김철수", 24, '남' }, { "이순희", 21, '여' }, { "박지영", 26, '여' } }; JTable table = new JTable(data, colNames); JScrollPane scrollPane = new JScrollPane(table); contentPane.add(scrollPane, BorderLayout.CENTER); JButton button = new JButton("출력"); button.addActionListener(new PrintActionListener(table)); contentPane.add(button, BorderLayout.SOUTH); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setVisible(true); } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; class PrintActionListener implements ActionListener { JTable table; PrintActionListener(JTable table) { this.table = table; } public void actionPerformed(ActionEvent e) { TableModel model = table.getModel(); int rowNum = model.getRowCount(); int colNum = model.getColumnCount(); for (int col = 0; col < colNum; col++) { String colName = model.getColumnName(col); System.out.print(colName + "\t"); System.out.println(); for (int row = 0; row < rowNum; row++) { Object obj = model.getValueAt(row, col); System.out.print(obj + "\t"); System.out.println("-----------------------------"); 모델을 가져옵니다. 모델에서 행과 열의 수를 가져옵니다. 컬럼 이름을 가져와서 출력합니다. 데이터를 가져와서 출력합니다.

02. 윈도우 프로그램의 작성 방법 GUI 프로그래밍 테이블에 행 추가/삭제하기 • 테이블을 생성할 때 자동으로 생기는 모델에는 행의 추가/삭제 기능이 없습니다. -> 테이블에 행을 추가/삭제하려면 모델을 직접 만들어서 사용해야 합니다.

02. 윈도우 프로그램의 작성 방법 GUI 프로그래밍 테이블에 행 추가/삭제하기 • 행 추가/삭제 기능이 있는 모델을 생성하는 방법

02. 윈도우 프로그램의 작성 방법 GUI 프로그래밍 테이블에 행 추가/삭제하기 • 직접 만든 모델에 연관된 테이블을 생성하는 방법

02. 윈도우 프로그램의 작성 방법 GUI 프로그래밍 테이블에 행 추가/삭제하기 • DefaultTableModel에 행을 추가하는 방법

02. 윈도우 프로그램의 작성 방법 GUI 프로그래밍 테이블에 행 추가/삭제하기 • DefaultTableModel에 있는 행을 삭제하는 방법

02. 윈도우 프로그램의 작성 방법 GUI 프로그래밍 테이블에 행 추가/삭제하기 [예제 19-9] 테이블에 행을 추가/삭제하는 윈도우 프로그램 main 메소드를 포함하는 클래스 [화면 설계] 삭제 버튼을 처리하는 리스너 클래스 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 import java.awt.*; import javax.swing.*; import javax.swing.table.*; class WindowExample8 { public static void main(String[] args) { JFrame frame = new JFrame("참가자 명단 프로그램"); frame.setPreferredSize(new Dimension(400, 200)); frame.setLocation(500, 400); Container contentPane = frame.getContentPane(); String colNames[] = { "이름", "나이", "성별" }; DefaultTableModel model = new DefaultTableModel(colNames, 0); JTable table = new JTable(model); contentPane.add(new JScrollPane(table), BorderLayout.CENTER); JPanel panel = new JPanel(); JTextField text1 = new JTextField(6); JTextField text2 = new JTextField(3); JTextField text3 = new JTextField(2); JButton button1 = new JButton("추가"); JButton button2 = new JButton("삭제"); panel.add(new JLabel("이름")); panel.add(text1); panel.add(new JLabel("나이")); panel.add(text2); panel.add(new JLabel("성별")); panel.add(text3); panel.add(button1); panel.add(button2); contentPane.add(panel, BorderLayout.SOUTH); button1.addActionListener( new AddActionListener(table, text1, text2, text3)); button2.addActionListener(new RemoveActionListener(table)); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setVisible(true); } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; class RemoveActionListener implements ActionListener { JTable table; RemoveActionListener(JTable table) { this.table = table; } public void actionPerformed(ActionEvent e) { int row = table.getSelectedRow(); if (row == -1) return; DefaultTableModel model = (DefaultTableModel) table.getModel(); model.removeRow(row); 추가 버튼을 처리하는 리스너 클래스 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; class AddActionListener implements ActionListener { JTable table; JTextField text1, text2, text3; AddActionListener(JTable table, JTextField text1, JTextField text2, JTextField text3) { this.table = table; this.text1 = text1; this.text2 = text2; this.text3 = text3; } public void actionPerformed(ActionEvent e) { String arr[] = new String[3]; arr[0] = text1.getText(); arr[1] = text2.getText(); arr[2] = text3.getText(); DefaultTableModel model = (DefaultTableModel) table.getModel(); model.addRow(arr);

02. 윈도우 프로그램의 작성 방법 GUI 프로그래밍 테이블에 행 추가/삭제하기 [예제 19-9] 테이블에 행을 추가/삭제하는 윈도우 프로그램 – 실행 결과 초기 상태 이름, 나이, 성별을 입력하고 추가 버튼을 눌렀을 때 마우스로 행을 클릭하고 삭제 버튼을 눌렀을 때

03. 그래픽과 이미지 디스플레이 GUI 프로그래밍 그래픽 프리미티브로 그림 그리기 • 윈도우에 그림을 그리기 위해 필요한 것 - 종이의 역할 : 패널 클래스(Jpanel의 서브클래스) - 필기도구의 역할 : java.awt.Graphics 클래스

GUI 프로그래밍 03. 그래픽과 이미지 디스플레이 그래픽 프리미티브로 그림 그리기 • 지금부터 작성할 예제의 윈도우

03. 그래픽과 이미지 디스플레이 GUI 프로그래밍 그래픽 프리미티브로 그림 그리기 • 윈도우에 그림을 그리는 방법 그림이 그려진 패널을 만듭니다. 그 패널을 content pane 위에 올려놓습니다.

JDK 라이브러리 모듈에 의해 자동으로 호출됩니다. GUI 프로그래밍 03. 그래픽과 이미지 디스플레이 그래픽 프리미티브로 그림 그리기 • 그림이 그려진 패널을 만드는 방법 1) JPanel의 서브클래스를 선언합니다. 이렇게 선언된 paint 메소드는 패널이 디스플레이 될 때 JDK 라이브러리 모듈에 의해 자동으로 호출됩니다.

03. 그래픽과 이미지 디스플레이 GUI 프로그래밍 그래픽 프리미티브로 그림 그리기 • 그림이 그려진 패널을 만드는 방법 2) paint 메소드 안에 다음과 같은 메소드 호출문을 써서 그림을 그립니다.

03. 그래픽과 이미지 디스플레이 GUI 프로그래밍 그래픽 프리미티브로 그림 그리기 [예제 19-10] 자동차 그림이 그려진 윈도우 프로그램 main 메소드를 포함하는 클래스 자동차 그림이 있는 패널 클래스 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 import java.awt.*; import javax.swing.*; class GraphicExample1 { public static void main(String[] args) { JFrame frame = new JFrame("자동차 프로그램"); frame.setLocation(500, 200); frame.setPreferredSize(new Dimension(400, 300)); Container contentPane = frame.getContentPane(); CarDrawingPanel drawingPanel = new CarDrawingPanel(); contentPane.add(drawingPanel); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setVisible(true); } 1 2 3 4 5 6 7 8 9 10 11 import javax.swing.*; import java.awt.*; class CarDrawingPanel extends JPanel { public void paint(Graphics g) { g.drawRect(100, 110, 200, 40); g.drawRect(150, 70, 100, 40); g.drawOval(125, 150, 30, 30); g.drawOval(245, 150, 30, 30); g.drawLine(50, 180, 350, 180); }

02. 윈도우 프로그램의 작성 방법 GUI 프로그래밍 데이터를 이용해서 그래프 그리기 • 지금부터 작성할 예제의 윈도우 버튼을 눌렀을 때 그래프가 그려지도록 하려면 어떻게 해야할까요? paint 메소드 안에서 if 조건문을 사용하면 됩니다.

02. 윈도우 프로그램의 작성 방법 GUI 프로그래밍 데이터를 이용해서 그래프 그리기 • 버튼을 눌렀을 때 막대 그래프가 그려지도록 하려면; -> repaint 메소드를 호출하여 paint 메소드를 간접 호출해야 합니다.

02. 윈도우 프로그램의 작성 방법 GUI 프로그래밍 데이터를 이용해서 그래프 그리기 • 하나의 paint 메소드를 가지고 두 가지 그림을 그리는 방법 class DrawingPanel extends JPanel { int korean, english, math; public void paint(Graphics g) { … if (korean > 0) g.fillRect(110, 250 - korean * 2, 10, korean * 2); if (english > 0) g.fillRect(210, 250 - english * 2, 10, english * 2); if (math > 0) g.fillRect(310, 250 - math * 2, 10, math * 2); } void setScores(int korean, int english, int math) { this.korean = korean; this.english = english; this.math = math; 국어, 영어, 수학 점수를 필드에 대입합니다 필드 값을 가져다가 막대 그래프를 그립니다 점수 필드 값을 설정하는 메소드

03. 그래픽과 이미지 디스플레이 GUI 프로그래밍 데이터를 이용해서 그래프 그리기 [예제 19-11] 성적 그래프 프로그램 점수를 입력하고 버튼을 누르면 막대 그래프가 출력됩니다 03. 그래픽과 이미지 디스플레이 데이터를 이용해서 그래프 그리기 [예제 19-11] 성적 그래프 프로그램 main 메소드를 포함하는 클래스 그래프를 그리는 패널 클래스 그래프 그리기 버튼을 처리하는 리스너 늘래스 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 import java.awt.*; import javax.swing.*; class GraphicExample2 { public static void main(String[] args) { JFrame frame = new JFrame("성적 그래프 프로그램"); frame.setLocation(500, 200); frame.setPreferredSize(new Dimension(400, 350)); Container contentPane = frame.getContentPane(); DrawingPanel drawingPanel = new DrawingPanel(); contentPane.add(drawingPanel, BorderLayout.CENTER); JPanel controlPanel = new JPanel(); JTextField text1 = new JTextField(3); JTextField text2 = new JTextField(3); JTextField text3 = new JTextField(3); JButton button = new JButton("그래프 그리기"); controlPanel.add(new JLabel("국어")); controlPanel.add(text1); controlPanel.add(new JLabel("영어")); controlPanel.add(text2); controlPanel.add(new JLabel("수학")); controlPanel.add(text3); controlPanel.add(button); contentPane.add(controlPanel, BorderLayout.SOUTH); frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE); button.addActionListener(new DrawActionListener( text1, text2, text3, drawingPanel)); frame.pack(); frame.setVisible(true); } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 import java.awt.*; import javax.swing.*; class DrawingPanel extends JPanel { int korean, english, math; public void paint(Graphics g) { g.clearRect(0, 0, getWidth(), getHeight()); g.drawLine(50, 250, 350, 250); for (int cnt = 1; cnt < 11; cnt++) { g.drawString(cnt*10 + "", 25, 255 - 20*cnt); g.drawLine(50, 250 - 20*cnt, 350, 250 - 20*cnt); } g.drawLine(50, 20, 50, 250); g.drawString("국어", 100, 270); g.drawString("영어", 200, 270); g.drawString("수학", 300, 270); g.setColor(Color.RED); if (korean > 0) g.fillRect(110, 250 - korean*2, 10, korean*2); if (english > 0) g.fillRect(210, 250 - english*2, 10, english*2); if (math > 0) g.fillRect(310, 250 - math*2, 10, math*2); void setScores(int korean, int english, int math) { this.korean = korean; this.english = english; this.math = math; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 import javax.swing.*; import java.awt.event.*; class DrawActionListener implements ActionListener { JTextField text1, text2, text3; DrawingPanel drawingPanel; DrawActionListener(JTextField text1, JTextField text2, JTextField text3, DrawingPanel drawingPanel) { this.text1 = text1; this.text2 = text2; this.text3 = text3; this.drawingPanel = drawingPanel; } public void actionPerformed(ActionEvent e) { try { int korean = Integer.parseInt( text1.getText()); int english = Integer.parseInt( text2.getText()); int math = Integer.parseInt(text3.getText()); drawingPanel.setScores(korean, english, math); drawingPanel.repaint(); catch (NumberFormatException nfe) { JOptionPane.showMessageDialog(drawingPanel, "잘못된 숫자 포맷입니다.", "에러 메시지", JOptionPane.ERROR_MESSAGE);

03. 그래픽과 이미지 디스플레이 GUI 프로그래밍 이미지 디스플레이 • 지금부터 작성할 예제의 윈도우 이미지를 디스플레이할 패널 이미지 파일 이름을 입력하는 부분

03. 그래픽과 이미지 디스플레이 GUI 프로그래밍 이미지 디스플레이 • 이미지를 디스플레이하는 방법 1) JPanel의 서브클래스를 선언합니다.

03. 그래픽과 이미지 디스플레이 GUI 프로그래밍 이미지 디스플레이 • 이미지를 디스플레이하는 방법 2) Image 객체를 만드는데 필요한 Toolkit 객체를 얻습니다.

03. 그래픽과 이미지 디스플레이 GUI 프로그래밍 이미지 디스플레이 • 이미지를 디스플레이하는 방법 3) Toolkit 객체를 이용해서 Image 객체를 만듭니다.

03. 그래픽과 이미지 디스플레이 GUI 프로그래밍 이미지 디스플레이 • 이미지를 디스플레이하는 방법 4) Image 객체를 가지고 drawImage 메소드를 호출하면 이미지가 디스플레이됩니다.

나머지를 paitn 메소드 밖으로 빼는 것이 좋음 GUI 프로그래밍 03. 그래픽과 이미지 디스플레이 이미지 디스플레이 • 이미지를 그리는 로직이 포함된 paint 메소드 프로그램의 성능에 문제를 일으키는 방법임 drawImage 메소드 호출문을 제외한 나머지를 paitn 메소드 밖으로 빼는 것이 좋음

03. 그래픽과 이미지 디스플레이 GUI 프로그래밍 이미지 디스플레이 [예제 19-12] 이미지 로딩 프로그램 초기 상태 main 메소드를 포함하는 클래스 이미지를 디스플레이하는 패널 클래스 이미지 로드 버튼을 처리하는 리스너 늘래스 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 import java.awt.*; import javax.swing.*; class ImageExample1 { public static void main(String[] args) { JFrame frame = new JFrame("이미지 로딩 프로그램"); frame.setLocation(500, 200); frame.setPreferredSize(new Dimension(500, 400)); Container contentPane = frame.getContentPane(); ImagePanel imagePanel = new ImagePanel(); contentPane.add(imagePanel, BorderLayout.CENTER); JPanel controlPanel = new JPanel(); JTextField text = new JTextField(30); JButton button = new JButton("이미지 로드"); controlPanel.add(text); controlPanel.add(button); contentPane.add(controlPanel, BorderLayout.SOUTH); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); button.addActionListener( new LoadActionListener(text, imagePanel)); frame.pack(); frame.setVisible(true); } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 import java.awt.*; import javax.swing.*; class ImagePanel extends JPanel { Image image; Toolkit toolkit = getToolkit(); void setPath(String path) { image = toolkit.getImage(path); } public void paint(Graphics g) { g.clearRect(0, 0, getWidth(), getHeight()); if (image != null) g.drawImage(image, 0, 0, this); 1 2 3 4 5 6 7 8 9 10 11 12 13 14 import javax.swing.*; import java.awt.event.*; class LoadActionListener implements ActionListener { JTextField text; ImagePanel imagePanel; LoadActionListener(JTextField text, ImagePanel imagePanel) { this.text = text; this.imagePanel = imagePanel; } public void actionPerformed(ActionEvent e) { imagePanel.setPath(text.getText()); imagePanel.repaint(); 초기 상태 이미지 파일의 경로명을 입력하고 버튼을 누르면 이미지가 나타납니다

04. 오디오 파일 재생하기 GUI 프로그래밍 오디오 파일의 재생 • 오디오 파일을 재생하는 방법 오디오 클립을 생성합니다. 오디오 클립을 플레이합니다.

GUI 프로그래밍 04. 오디오 파일 재생하기 오디오 파일의 재생 • 오디오 클립을 생성하는 방법 (1)

GUI 프로그래밍 04. 오디오 파일 재생하기 오디오 파일의 재생 • 오디오 클립을 생성하는 방법 (2)

GUI 프로그래밍 04. 오디오 파일 재생하기 오디오 파일의 재생 • 오디오 클립을 플레이하는 방법

플레이 버튼을 누르면 스피커를 통해 소리가 납니다 GUI 프로그래밍 04. 오디오 파일 재생하기 오디오 파일의 재생 [예제 19-13] 오디오 파일을 플레이하는 프로그램 main 메소드를 포함하는 클래스 [화면 설계] 플레이 버튼을 처리하는 리스너 클래스 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 import java.awt.*; import javax.swing.*; class AudioExample1 { public static void main(String[] args) { JFrame frame = new JFrame("오디오 플레이 프로그램"); frame.setLocation(500, 200); frame.setPreferredSize(new Dimension(500, 70)); Container contentPane = frame.getContentPane(); contentPane.setLayout(new FlowLayout()); JTextField text = new JTextField(30); JButton button = new JButton("플레이"); contentPane.add(text); contentPane.add(button); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); button.addActionListener(new PlayActionListener(text)); frame.pack(); frame.setVisible(true); } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 import javax.swing.*; import java.awt.event.*; import java.applet.*; import java.net.*; import java.io.File; class PlayActionListener implements ActionListener { // 생성자 JTextField text; PlayActionListener(JTextField text) { this.text = text; } public void actionPerformed(ActionEvent e) { try { File file = new File(text.getText()); AudioClip audioClip = Applet.newAudioClip(file.toURL()); audioClip.play(); catch (MalformedURLException mue) { JOptionPane.showMessageDialog(text, "잘못된 파일명입니다.", "에러 메시지", JOptionPane.ERROR_MESSAGE); 초기 상태 오디오 파일의 경로명을 입력하고 플레이 버튼을 누르면 스피커를 통해 소리가 납니다