Microsoft PowerPoint - Java-03.pptx

Similar documents
gnu-lee-oop-kor-lec10-1-chap10

9장.key

10장.key

<4D F736F F F696E74202D20C1A63139C0E520B9E8C4A120B0FCB8AEC0DA28B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

PowerPoint Presentation

No Slide Title

<4D F736F F F696E74202D20C1A63138C0E520C0CCBAA5C6AE20C3B3B8AE28B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63236C0E520BED6C7C3B8B428B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63230C0E520BDBAC0AE20C4C4C6F7B3CDC6AE203128B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

강의자료

Microsoft PowerPoint - ÀÚ¹Ù08Àå-1.ppt

<4D F736F F F696E74202D20C1A63233C0E520B1D7B7A1C7C820C7C1B7CEB1D7B7A1B9D628B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

슬라이드 1

public class FlowLayoutPractice extends JFrame { public FlowLayoutPractice() { super("flowlayout Practice"); this. Container contentpane = getcontentp

자바GUI실전프로그래밍2_장대원.PDF

슬라이드 1

Microsoft PowerPoint - EEL2 Lecture10 -Swing and Event Handling.pptx

슬라이드 1

11장.key

Microsoft PowerPoint - 04-UDP Programming.ppt

제8장 자바 GUI 프로그래밍 II

오버라이딩 (Overriding)

Cluster management software

No Slide Title

PowerPoint Presentation

Microsoft PowerPoint - 14주차 강의자료

Java Programing Environment

JTable과 MVC(Model-View-Controller) 구조 - 모델-뷰-컨트롤러구조는데이터의저장과접근에대한제공은모델이담당하고, 화면표시는뷰, 이벤트의처리는컨트롤러가하도록각역할을구분한구조이다. 즉, 역할의분담을통하여상호간의영향을최소화하고각요소의독립성을보장하여독자

(Microsoft PowerPoint - LZVNQBAJWGTC.ppt [\310\243\310\257 \270\360\265\345])

Microsoft PowerPoint - 06-Chapter09-Event.ppt

이것만은 알고 갑시다 정답

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

8장.그래픽 프로그래밍

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

PowerPoint Presentation

PowerPoint Presentation

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

Network Programming

Chap12

PowerPoint Presentation

gnu-lee-oop-kor-lec06-3-chap7

05-class.key

Microsoft PowerPoint - ÀÚ¹Ù08Àå-2.ppt

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

Cluster management software

PowerPoint 프레젠테이션

Microsoft PowerPoint - java1-lecture10.ppt [호환 모드]

PowerPoint Presentation

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

PowerPoint 프레젠테이션

JAVA PROGRAMMING 실습 08.다형성

PowerPoint Presentation

<4D F736F F F696E74202D205B4A415641C7C1B7CEB1D7B7A1B9D65D3130C0E5C0CCBAA5C6AEC3B3B8AE>

02 C h a p t e r Java

Microsoft PowerPoint - [JAVA프로그래밍]9장GUI

rmi_박준용_final.PDF

Microsoft PowerPoint - Java7.pptx

자바로

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

10-Java Applet

Microsoft PowerPoint - java1-lecture11.ppt [호환 모드]

JAVA PROGRAMMING 실습 09. 예외처리

PowerPoint Presentation

모든스윙컴포넌트에는텍스트옆에이미지를추가로표시할수있다. ImageIcon image = new ImageIcon("image.gif"); JLabel label = new JLabel(" 이미지레이블 "); label.seticon(image);

10 이벤트 처리와 그래픽 프로그래밍.key

Design Issues

연습문제 정답

웹연동 } 웹 (Web) 환경에서데이터베이스시스템을연동하는방법은다음과같다 } Server Client 구조의통신 (2-Tier) } Server Middleware Client 구조의통신 (3-Tier) 2

슬라이드 1

Microsoft PowerPoint 자바-AWT컴포넌트(Ch8).pptx

PowerPoint Presentation

비긴쿡-자바 00앞부속

중간고사

PowerPoint 프레젠테이션

JMF3_심빈구.PDF

제11장 프로세스와 쓰레드

Microsoft PowerPoint - 2강

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

쉽게 풀어쓴 C 프로그래밊

운동시뮬레이션 강의 소개

API - Notification 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어

11-GUI.key

안드로이드기본 11 차시어댑터뷰 1 학습목표 어댑터뷰가무엇인지알수있다. 리스트뷰와스피너를사용하여데이터를출력할수있다. 2 확인해볼까? 3 어댑터뷰 1) 학습하기 어댑터뷰 - 1 -

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - CSharp-10-예외처리

PowerPoint 프레젠테이션

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

(Microsoft PowerPoint - java1-lecture7.ppt [\310\243\310\257 \270\360\265\345])

쉽게 풀어쓴 C 프로그래밍

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public

Spring Boot/JDBC JdbcTemplate/CRUD 예제

Microsoft PowerPoint - java2-lecture5.ppt [호환 모드]

PowerPoint 프레젠테이션

12-file.key

Microsoft Word - java19-1-final-answer.doc

(Microsoft PowerPoint - java1-lecture11.ppt [\310\243\310\257 \270\360\265\345])

Transcription:

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

GUI 환경에서작동하는프로그램 -2 윈도우프로그램에대하여 텍스트모드프로그램과윈도우프로그램의구조적차이 3 윈도우프로그램의작성방법 윈도우프로그램의구조 네단계로실행되는윈도우프로그램

윈도우프로그램의작성방법 -2 윈도우의구성요소 윈도우의기본적인구성요소 타이틀바 (title bar) content pane 프레임 (frame) 라벨 (label) 컴포넌트 (component) 프레임, 타이틀바, content pane, 라벨등의구성요소를통틀어이르는용어 윈도우프로그램의작성방법 -3 윈도우의구성요소 컴포턴트들이겹쳐진층으로구성되는윈도우 타이틀바 프레임 content pane Hello, Java 라벨

윈도우프로그램의작성방법 - 윈도우를구성하는방법 프레임만드는방법 타이틀이표시된프레임만드는방법 윈도우프로그램의작성방법 - 윈도우를구성하는방법 라벨만드는방법 프레임에종속된 content pane 을가져오는방법

윈도우프로그램의작성방법 - 윈도우를구성하는방법 content pane 위에라벨을올려놓는방법 프레임을적절한크기로조정하는방법 9 윈도우프로그램의작성방법 - 윈도우를디스플레이하는방법 프레임을디스플레이하는방법

윈도우프로그램의작성방법 - 윈도우로작동하는 Hello, Java 프로그램 [ 예제 19-1] 윈도우로작동하는 Hello, Java 1 2 3 9 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); 윈도우프로그램의작성방법 -9 프로그램을컴파일해서실행하면바탕화면왼쪽상단에윈도우가나타납니다 1 단 계 : 윈 도 우 를 구성한다 2단계 : 윈도우를. 디스플레이한다 모니터화면 12

위에서아래로Exercise 19-1 윈도우프로그램작성 다음요구사항을만족하는프로그램을작성하시오. 내이름은 xxx 입니다. 를화면에출력하는윈도우프로그램을작성하시오. 윈도우 title은 첫번째윈도우프로그램 로지정할것. 13 윈도우프로그램의작성방법 - 모니터상의좌표체계 (0, 0) X 좌표는왼쪽에서오른쪽으로증가좌표는증가모니터화면 1

윈도우프로그램의작성방법 - Hello, Java 프로그램완성하기 윈도우의위치를지정하는방법 프레임의크기를바꾸는방법 1 윈도우프로그램의작성방법 -12 Hello, Java 프로그램완성하기 라벨의위치를지정하는방법 버튼을눌렀을때윈도우가닫히도록만드는방법 1

윈도우프로그램의작성방법 -13 Hello, Java 프로그램완성하기 [ 예제 19-2] 윈도우로작동하는 Hello, Java 프로그램 ( 완성 ) 1 2 3 9 12 13 1 1 import java.awt.*; import javax.swing.*; class WindowExample1 { public static void main(string[] args) { JFrame frame = new JFrame("Hello Java Program"); frame.setlocation(00, 00); 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); 프레임의 위치와 크기를 지정합니다. 라벨의텍스트를중앙에표시 버튼을눌렀을때해야할일을지정 1 윈도우프로그램의작성방법 -1 프로그램을실행하면바탕화면중앙에윈도우가나타납니다 모니터화면 1

Exercise 19-2 프레임위치및크기조절 Ex. 19-1 에서작성된프로그램을다음요구사항에따라변경하시오. 윈도우프레임크기를 00x00 으로지정 윈도우위치는화면중앙에오도록 라벨은윈도우중간에위치 x 아이콘이눌렸을때프로그램이종료하도록 19 윈도우프로그램의작성방법 -1 텍스트상자와버튼 지금부터작성할예제의윈도우 텍스트상자 버튼 라벨 텍스트상자를만드는방법 20

윈도우프로그램의작성방법 -1 텍스트상자와버튼 버튼을만드는방법 여러개의컴포넌트를 content pane 위에올려놓는방법 잘못된예 contentpane.add(text); contentpane.add(button); contentpane.add(label); 이렇게하면마지막에추가된라벨만보이게됩니다 21 윈도우프로그램의작성방법 -1 텍스트상자와버튼 Content pane 의기본레이아웃 border layout 22

윈도우프로그램의작성방법 -1 텍스트상자와버튼 여러개의컴포넌트를 content pane 위에올려놓는방법 올바른예 contentpane.add(text, BorderLayout.CENTER); contentpane.add(button, BorderLayout.EAST); contentpane.add(label, BorderLayout.SOUTH); 이렇게배치됩니다 23 윈도우프로그램의작성방법 -19 텍스트상자와버튼 [ 예제 19-3] 텍스트상자와버튼이있는 Hello 프로그램 ( 미완성 ) 1 2 3 9 12 13 1 1 1 1 1 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, 0)); frame.setlocation(00, 00); Container contentpane = frame.getcontentpane(); JTextField text = new JTextField(); JButton button = new JButton(" 확인 "); 1단계 : 윈도우를 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); 2단계 : 윈도우를디스플레이한다 2

윈도우프로그램의작성방법 -20 레이아웃과패널 자주사용되는레이아웃들 2 윈도우프로그램의작성방법 -21 레이아웃과패널 Content pane 의레이아웃을설정하는방법 2

윈도우프로그램의작성방법 -22 레이아웃과패널 Content pane 의레이아웃을설정하는방법 ( 계속 ) 2 윈도우프로그램의작성방법 -23 레이아웃과패널 [ 예제 19-] 여러가지레이아웃을사용하는프로그램들 grid layout 을사용하는프로그램 1 import java.awt.*; 2 import javax.swing.*; 3 class WindowExample3 { public static void main(string[] args) { JFrame frame = new JFrame("Zoo Program"); frame.setlocation(00, 00); Container contentpane = frame.getcontentpane(); GridLayout layout = new GridLayout(3, 2); 9 contentpane.setlayout(layout); contentpane.add(new JButton(" 얼룩말 ")); contentpane.add(new JButton(" 사자 ")); 12 contentpane.add(new JButton(" 코끼리 ")); 13 contentpane.add(new JButton(" 코뿔소 ")); 1 contentpane.add(new JButton(" 펭귄 ")); 1 contentpane.add(new JButton(" 하이에나 ")); 1 frame.setdefaultcloseoperation(jframe.exit_on_close); 1 frame.pack(); 1 frame.setvisible(true); 19 20 flow layout 을사용하는프로그램 1 import java.awt.*; 2 import javax.swing.*; 3 class WindowExample { public static void main(string[] args) { JFrame frame = new JFrame("Fruit Basket Program"); frame.setlocation(00, 00); Container contentpane = frame.getcontentpane(); FlowLayout layout = new FlowLayout(); 9 contentpane.setlayout(layout); contentpane.add(new JButton(" 사과 ")); contentpane.add(new JButton(" 파인애플 ")); 12 contentpane.add(new JButton(" 오렌지 ")); 13 contentpane.add(new JButton(" 포도 ")); 1 contentpane.add(new JButton(" 레몬 ")); 1 contentpane.add(new JButton( 복숭아 ")); 1 frame.setdefaultcloseoperation(jframe.exit_on_close); 1 frame.pack(); 1 frame.setvisible(true); 19 20 box layout 을사용하는프로그램 1 2 3 9 12 13 1 1 1 1 1 19 20 import java.awt.*; import javax.swing.*; class WindowExample { public static void main(string[] args) { JFrame frame = new JFrame("Cafe Program"); frame.setlocation(00, 00); 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); 2

윈도우프로그램의작성방법 -2 레이아웃과패널 다음과같은윈도우는어떤레이아웃을이용해서만들수있을까요? 패널 (panel) 을만들어서 content pane 위에올려놓고 그위에컴포넌트를올려놓으면됩니다. 29 윈도우프로그램의작성방법 -2 레이아웃과패널 패널을이용하여복합적인레이아웃을설정하는방법 1) 패널을생성해서 content pane 위에추가합니다. 2) 패널의레이아웃을설정합니다. 30

윈도우프로그램의작성방법 -2 레이아웃과패널 패널을이용하여복합적인레이아웃을설정하는방법 3) add 메소드를이용하여패널위에컴포넌트를추가합니다. 31 윈도우프로그램의작성방법 -2 레이아웃과패널 [ 예제 19-] JPanel 의사용예를보여주는프로그램 1 2 3 9 12 13 1 1 1 1 1 19 20 21 22 23 2 2 2 import java.awt.*; import javax.swing.*; class WindowExample { public static void main(string[] args) { JFrame frame = new JFrame(" 연락처프로그램 "); frame.setpreferredsize(new Dimension(20, )); frame.setlocation(00, 00); 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에추가합니다 32

Exercise 19-3 계산기프로그램 - layout. 다음과같은윈도우프로그램을작성하시오. 화면 layout 만설정할것. 33 윈도우프로그램의작성방법 버튼이벤트의처리방법 텍스트상자의텍스트를가져오는방법 라벨에텍스트를표시하는방법 3

윈도우프로그램의작성방법 버튼이벤트의처리방법 버튼을눌렀을때해야할일을기술하는방법 버튼을눌렀을때 actionperformed 메소드가호출되도록만드는방법 3 윈도우프로그램의작성방법 버튼이벤트의처리방법 [ 예제 19-] 텍스트상자와버튼이있는 Hello 프로그램 ( 완성 ) main 메소드를포함하는클래스 1 2 3 9 12 13 1 1 1 1 1 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, 0)); frame.setlocation(00, 00); 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 import javax.swing.*; 2 import java.awt.event.*; 3 class ConfirmButtonActionListener implements ActionListener { JTextField text; JLabel label; ConfirmButtonActionListener(JTextField text, JLabel label) { this.text = text; this.label = label; 9 public void actionperformed(actionevent e) { String name = text.gettext(); 12 label.settext("hello, " + name); 13 1 텍스트상자에 선희 라고입력하고확인버튼을눌렀을때 텍스트상자에 기영 이라고입력하고확인버튼을눌렀을때 3

Exercise 19- 계산기프로그램 다음과같은윈도우프로그램을작성하시오. 화면 layout 과함께 확인 버턴을누를경우두개의 Text 의숫자값이계산되어합계가화면에출력되게작성할것. 3 그래픽과이미지디스플레이 -1 그래픽프리미티브로그림그리기 윈도우에그림을그리기위해필요한것 - 종이의역할 : 패널클래스 (Jpanel의서브클래스 ) - 필기도구의역할 : java.awt.graphics 클래스 지금부터작성할예제의윈도우 3

그래픽과이미지디스플레이 -2 그래픽프리미티브로그림그리기 윈도우에그림을그리는방법 1) 그림이그려진패널을만듭니다. 2) 그패널을 content pane 위에올려놓습니다. 그림이그려진패널을만드는방법 1) JPanel 의서브클래스를선언합니다. 이렇게선언된 paint 메소드는패널이디스플레이될때 JDK 라이브러리모듈에의해자동으로호출됩니다. 39 그래픽과이미지디스플레이 -3 그래픽프리미티브로그림그리기 그림이그려진패널을만드는방법 2) paint 메소드안에다음과같은메소드호출문을써서그림을그립니다. 0

그래픽과이미지디스플레이 - 그래픽프리미티브로그림그리기 [ 예제 19-] 자동차그림이그려진윈도우프로그램 main 메소드를포함하는클래스 자동차그림이있는패널클래스 1 2 3 9 12 13 1 1 import java.awt.*; import javax.swing.*; class GraphicExample1 { public static void main(string[] args) { JFrame frame = new JFrame(" 자동차프로그램 "); frame.setlocation(00, 200); frame.setpreferredsize(new Dimension(00, 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 9 import javax.swing.*; import java.awt.*; class CarDrawingPanel extends JPanel { public void paint(graphics g) { g.drawrect(0, 1, 200, 0); g.drawrect(, 0, 0, 0); g.drawoval(12,, 30, 30); g.drawoval(2,, 30, 30); g.drawline(0,, 30, ); 1 Exercise 9--2 그림그리기 자신의얼굴을화면에그리는프로그램을작성하시오. 2

그래픽과이미지디스플레이 - 데이터를이용해서그래프그리기 지금부터작성할예제의윈도우 버튼을눌렀을때그래프가그려지도록 하려면어떻게해야할까요? paint 메소드안에서 if 조건문을사용하면됩니다. 3 그래픽과이미지디스플레이 - 데이터를이용해서그래프그리기 버튼을눌렀을때막대그래프가그려지도록하려면 ; -> repaint 메소드를호출하여 paint 메소드를간접호출해야합니다.

그래픽과이미지디스플레이 - 데이터를이용해서그래프그리기 하나의 paint 메소드를가지고두가지그림을그리는방법 class DrawingPanel extends JPanel { int korean, english, math; public void paint(graphics g) { if (korean > 0) g.fillrect(1, 20 - korean * 2,, korean * 2); if (english > 0) g.fillrect(2, 20 - english * 2,, english * 2); 국어, 영어, 수학점수를 if (math > 0) 필드에대입합니다 g.fillrect(3, 20 - math * 2,, math * 2); void setscores(int korean, int english, int math) { this.korean = korean; this.english = english; this.math = math; 필드값을가져다가막대그래프를그립니다 점수필드값을설정하는메소드 그래픽과이미지디스플레이 - 데이터를이용해서그래프그리기 main 메소드를포함하는클래스 1 2 3 9 12 13 1 1 1 1 1 19 20 21 22 23 2 2 2 2 2 29 [ 예제 19-] 성적그래프프로그램 import java.awt.*; import javax.swing.*; class GraphicExample2 { public static void main(string[] args) { JFrame frame = new JFrame(" 성적그래프프로그램 "); frame.setlocation(00, 200); frame.setpreferredsize(new Dimension(00, 30)); 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 import java.awt.*; 2 import javax.swing.*; 3 class DrawingPanel extends JPanel { int korean, english, math; public void paint(graphics g) { 9 12 13 1 1 1 1 1 19 20 21 22 g.clearrect(0, 0, getwidth(), getheight()); g.drawline(0, 20, 30, 20); for (int cnt = 1; cnt < ; cnt++) { g.drawstring(cnt* + "", 2, 2-20*cnt); g.drawline(0, 20-20*cnt, 30, 20-20*cnt); g.drawline(0, 20, 0, 20); g.drawstring(" 국어 ", 0, 20); g.drawstring(" 영어 ", 200, 20); g.drawstring(" 수학 ", 300, 20); g.setcolor(color.red); if (korean > 0) g.fillrect(1, 20 - korean*2,, korean*2); if (english > 0) g.fillrect(2, 20 - english*2,, english*2); if (math > 0) g.fillrect(3, 20 - math*2,, math*2); 23 2 2 2 2 2 void setscores(int korean, int english, int math) { this.korean = korean; this.english = english; this.math = math; 29 그래프그리기버튼을처리하는리스너늘래스 1 2 3 9 12 13 1 1 1 1 1 19 20 21 22 23 2 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); 점수를입력하고버튼을누르면막대그래프가출력됩니다

그래픽과이미지디스플레이 -9 이미지디스플레이 지금부터작성할예제의윈도우 이미지를디스플레이할패널 이미지파일이름을입력하는부분 그래픽과이미지디스플레이 - 이미지디스플레이 이미지를디스플레이하는방법 1) JPanel의서브클래스를선언합니다. 2) Image 객체를만드는데필요한 Toolkit 객체를얻습니다.

그래픽과이미지디스플레이 - 이미지디스플레이 이미지를디스플레이하는방법 3) Toolkit 객체를이용해서 Image 객체를만듭니다. ) Image 객체를가지고 drawimage 메소드를호출하면이미지가디스플레이됩니다. 9 그래픽과이미지디스플레이 -12 이미지디스플레이 이미지를그리는로직이포함된 paint 메소드 프로그램의성능에문제를일으키는방법임 drawimage 메소드호출문을제외한나머지를 paint 메소드밖으로빼는것이좋음 0

그래픽과이미지디스플레이 -13 이미지디스플레이 [ 예제 19-12] 이미지로딩프로그램 main 메소드를포함하는클래스 1 import java.awt.*; 2 import javax.swing.*; 3 class ImageExample1 { public static void main(string[] args) { JFrame frame = new JFrame(" 이미지로딩프로그램 "); frame.setlocation(00, 200); frame.setpreferredsize(new Dimension(00, 00)); Container contentpane = frame.getcontentpane(); 9 ImagePanel imagepanel = new ImagePanel(); contentpane.add(imagepanel, BorderLayout.CENTER); JPanel controlpanel = new JPanel(); 12 JTextField text = new JTextField(30); 13 JButton button = new JButton(" 이미지로드 "); 1 controlpanel.add(text); 1 controlpanel.add(button); 1 contentpane.add(controlpanel, BorderLayout.SOUTH); 1 frame.setdefaultcloseoperation(jframe.exit_on_close); 1 button.addactionlistener( new LoadActionListener(text, imagepanel)); 19 20 21 22 frame.pack(); frame.setvisible(true); 초기상태 이미지를디스플레이하는패널클래스 1 import java.awt.*; 2 import javax.swing.*; 3 class ImagePanel extends JPanel { Image image; Toolkit toolkit = gettoolkit(); void setpath(string path) { image = toolkit.getimage(path); 9 public void paint(graphics g) { 12 g.clearrect(0, 0, getwidth(), getheight()); if (image!= null) g.drawimage(image, 0, 0, this); 13 1 이미지로드버튼을처리하는리스너늘래스 1 2 3 9 12 13 1 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(); 이미지파일의경로명을입력하고버튼을누르면이미지가나타납니다 1 Exercise 19- 이미지다루기 다음요구사항을만족하는프로그램을작성하시오. 화면에그림 9개를 3x3 형태로출력할것. 그림은인터넷에서임의의것을가져와사용할것 2

오디오파일의재생 오디오파일재생하기 -1 오디오파일을재생하는방법 1) 오디오클립을생성합니다. 2) 오디오클립을플레이합니다. 오디오클립을생성하는방법 (1) 오디오클립을생성하는방법 (2) 3 오디오파일의재생 오디오파일재생하기 -2 오디오클립을플레이하는방법

오디오파일의재생 오디오파일재생하기 -3 [ 예제 19-13] 오디오파일을플레이하는프로그램 main 메소드를포함하는클래스 [ 화면설계 ] 플레이버튼을처리하는리스너클래스 1 2 3 import java.awt.*; import javax.swing.*; class AudioExample1 { public static void main(string[] args) { JFrame frame = new JFrame(" 오디오플레이프로그램 "); frame.setlocation(00, 200); 1 2 3 import javax.swing.*; import java.awt.event.*; import java.applet.*; import java.net.*; import java.io.file; class PlayActionListener implements ActionListener { // 생성자 9 12 13 frame.setpreferredsize(new Dimension(00, 0)); Container contentpane = frame.getcontentpane(); contentpane.setlayout(new FlowLayout()); JTextField text = new JTextField(30); JButton button = new JButton(" 플레이 "); contentpane.add(text); contentpane.add(button); 9 12 13 JTextField text; PlayActionListener(JTextField text) { this.text = text; public void actionperformed(actionevent e) { try { File file = new File(text.getText()); 1 1 frame.setdefaultcloseoperation(jframe.exit_on_close); button.addactionlistener(new PlayActionListener(text)); 1 1 AudioClip audioclip = Applet.newAudioClip(file.toURL()); audioclip.play(); 1 1 frame.pack(); frame.setvisible(true); 1 1 catch (MalformedURLException mue) { 1 1 JOptionPane.showMessageDialog(text, 초기상태 19 19 " 잘못된파일명입니다.", 20 " 에러메시지 ", JOptionPane.ERROR_MESSAGE); 21 오디오파일의경로명을입력하고 22 플레이버튼을누르면스피커를통해소리가납니다 23 Mouse Handling -1 인터페이스 MouseListener 구현 public void mouseentered (MouseEvent e) public void mouseexited (MouseEvent e) public void mousepressed (MouseEvent e) public void mouseclicked (MouseEvent e) public void mousereleased (MouseEvent e) MouseEvent e; e.getx(); // 현재마우스커서의 X좌표 e.gety(); // 현재마우스커서의 Y좌표

Mouse Handling -2 public class MouseHandler implements MouseListener { public void mouseentered (MouseEvent e) {... public void mouseexited (MouseEvent e) {... public void mousepressed (MouseEvent e) {... public void mouseclicked (MouseEvent e) {... public void mousereleased (MouseEvent e) {... JFrame f = new JFrame(); MouseHandler mhandler = new MouseHandler();... f.addmouselistener( mhandler ); Mouse Handling -3 인터페이스 MouseMotionHandler 구현 public void mousedragged (MouseEvent e) public void mousemoved (MouseEvent e) JFrame f = new JFrame(); MouseMotionHandler mmhandler = new MouseMotionHandler();... f.addmousemotionlistener( mmhandler );

import java.awt.*; import java.awt.event.*; import javax.swing.*; class MouseTest{ private JFrame f; private TextField tf; public static void main(string args[]) { MouseTest two = new MouseTest(); two.go(); public void go() { f = new JFrame("Two listeners example"); f.add (new Label ("Click and drag the mouse"), BorderLayout.NORTH); tf = new TextField (30); f.add (tf, BorderLayout.SOUTH); f.setdefaultcloseoperation(jframe.exit_on_close); MouseMotionHandler mousemotion = new MouseMotionHandler(); f.addmousemotionlistener(mousemotion); MouseHandler mouse = new MouseHandler(); f.addmouselistener (mouse); f.setsize(300, 200); f.setvisible(true); class MouseHandler implements MouseListener { public void mouseentered (MouseEvent e) { String s = "The mouse entered"; tf.settext (s); public void mouseexited (MouseEvent e) { String s = "The mouse has left the building"; tf.settext (s); public void mousepressed (MouseEvent e) { String s = "The mouse has been pressed"; tf.settext (s); public void mouseclicked (MouseEvent e) { String s = "The mouse has been clicked"; tf.settext (s); public void mousereleased (MouseEvent e) { String s = "The mouse has been released"; tf.settext (s); class MouseMotionHandler implements MouseMotionListener { public void mousedragged (MouseEvent e) { String s = "Mouse dragging: X = " + e.getx() +" Y = " + e.gety(); tf.settext (s); public void mousemoved (MouseEvent e) { Mouse Handling - import java.awt.*; import java.awt.event.*; import javax.swing.*; class MouseTest { private JFrame f; private TextField tf; public static void main(string args[]) { MouseTest two = new MouseTest(); two.go(); public void go() { f = new JFrame("Two listeners example"); f.add (new Label ("Click and drag the mouse"), BorderLayout.NORTH); tf = new TextField (30); f.add (tf, BorderLayout.SOUTH); f.setdefaultcloseoperation(jframe.exit_on_close); MouseHandler mouse = new MouseHandler(); MouseMotionHandler mousemotion = new MouseMotionHandler(); f.addmouselistener (mouse); f.addmousemotionlistener(mousemotion); f.setsize(300, 200); f.setvisible(true); 9 class MouseHandler implements MouseListener { public void mouseentered (MouseEvent e) { String s = "The mouse entered"; tf.settext (s); public void mouseexited (MouseEvent e) { String s = "The mouse has left the building"; tf.settext (s); public void mousepressed (MouseEvent e) { String s = "The mouse has been pressed"; tf.settext (s); public void mouseclicked (MouseEvent e) { String s = "The mouse has been clicked"; tf.settext (s); public void mousereleased (MouseEvent e) { String s = "The mouse has been released"; tf.settext (s); class MouseMotionHandler implements MouseMotionListener { public void mousedragged (MouseEvent e) { String s = "Mouse dragging: X = " + e.getx() + " Y = " + e.gety(); tf.settext (s); public void mousemoved (MouseEvent e) {