PowerPoint Presentation

Similar documents
Microsoft PowerPoint - 06-Chapter09-Event.ppt

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

운동시뮬레이션 강의 소개

오버라이딩 (Overriding)

슬라이드 1

Cluster management software

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

<4D F736F F F696E74202D20C1A63233C0E520B1D7B7A1C7C820C7C1B7CEB1D7B7A1B9D628B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

10장.key

<4D F736F F F696E74202D20C1A63138C0E520C0CCBAA5C6AE20C3B3B8AE28B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

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

9장.key

<4D F736F F F696E74202D20C1A63236C0E520BED6C7C3B8B428B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63139C0E520B9E8C4A120B0FCB8AEC0DA28B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

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

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

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

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

Cluster management software

JAVA PROGRAMMING 실습 08.다형성

PowerPoint Presentation

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

PowerPoint Presentation

Microsoft PowerPoint - 10장

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

8장.그래픽 프로그래밍

<4D F736F F F696E74202D20C1A63230C0E520BDBAC0AE20C4C4C6F7B3CDC6AE203128B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

강의자료

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

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

Microsoft PowerPoint - lec09_12.ppt [호환 모드]

PowerPoint 프레젠테이션

<4D F736F F F696E74202D205B4A415641C7C1B7CEB1D7B7A1B9D65D3130C0E5C0CCBAA5C6AEC3B3B8AE>

Microsoft PowerPoint - Java-03.pptx

PowerPoint Presentation

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

PowerPoint 프레젠테이션

Cluster management software

11장.key

슬라이드 1

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

Microsoft PowerPoint - 14주차 강의자료

윈도우시스템프로그래밍

PowerPoint Template

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - 2강

No Slide Title

PowerPoint 프레젠테이션

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

PowerPoint Presentation

Microsoft PowerPoint - 04-UDP Programming.ppt

Design Issues

자바로

01-OOPConcepts(2).PDF

PowerPoint 프레젠테이션

Network Programming

PowerPoint 프레젠테이션

Java Programing Environment

PowerPoint Presentation

10-Java Applet

어댑터뷰

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

PowerPoint 프레젠테이션

No Slide Title

슬라이드 1

슬라이드 1

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

제11장 프로세스와 쓰레드

윈도우시스템프로그래밍

C++ Programming

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

슬라이드 1

02 C h a p t e r Java

12 강. 문자출력 Direct3D 에서는문자를출력하기위해서 LPD3DXFONT 객체를사용한다 LPD3DXFONT 객체생성과초기화 LPD3DXFONT 객체를생성하고초기화하는함수로 D3DXCreateFont() 가있다. HRESULT D3DXCreateFont

Chap12

PowerPoint Presentation

쉽게

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

JUNIT 실습및발표

쉽게 풀어쓴 C 프로그래밍

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

. 스레드 (Thread) 란? 스레드를설명하기전에이글에서언급되는용어들에대하여알아보도록하겠습니다. - 응용프로그램 ( Application ) 사용자에게특정서비스를제공할목적으로구현된응용프로그램을말합니다. - 컴포넌트 ( component ) 어플리케이션을구성하는기능별요

PowerPoint Presentation

Spring Boot/JDBC JdbcTemplate/CRUD 예제

PowerPoint Presentation

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

[ 그림 8-1] XML 을이용한옵션메뉴설정방법 <menu> <item 항목ID" android:title=" 항목제목 "/> </menu> public boolean oncreateoptionsmenu(menu menu) { getme

Microsoft PowerPoint - 4주차_Android_UI구현.ppt [호환 모드]

슬라이드 1

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

쉽게 풀어쓴 C 프로그래밍

JAVA PROGRAMMING 실습 09. 예외처리

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint PythonGUI-sprite

Microsoft PowerPoint - 6-PythonGUI-sprite

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

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

var answer = confirm(" 확인이나취소를누르세요."); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write(" 확인을눌렀습니다."); else { document.write(" 취소를눌렀습니다.");

MVVM 패턴의 이해

Transcription:

Computer Programming Java AWT Lab 18 엄현상 (Eom, Hyeonsang) School of Computer Science and Engineering Seoul National University Copyrights 2015 DCSLab. All Rights Reserved

Overview AWT 일반 AWT 다루기기본 AWT 이벤트다루기 좀더자세히

AWT 는뭐니? 대부분의 GUI 플랫폼에서지원되는평이한그래픽기능들을모아놓은클래스 고전적인윈도우프로그래밍방식 GUI 관련그래픽이실행되는시스템에의존 heavyweight component java.awt.* 역할 코드작성시반드시 import 해야함 그래픽컨텍스트제어및관리 도형과텍스트출력 이미지관련제어및관리 이러한단점때문에 Swing 이개발됨 Swing 은경량컴포넌트임

왜우린 AWT 를알아야하지? 사용자인터페이스의종류 CUI (Character User Interface) GUI (Graphical User Interface) 현재우리가사용하는상용프로그램은대부분 GUI 를기반으로하고있음 Windows, Media Player, Editplus, 각종게임등 따라서윈도우프로그래밍은필수적임 자바에서는 AWT 와 Swing 을이용해프로그래밍할수있음

AWT 컴포넌트

컴포넌트사용방법 1. 컴포넌트를생성함 Button mybutton= new Button(" 내버튼 "); 2. 컨테이너에컴포넌트를추가함 add(mybutton); 3. 이벤트처리루틴제작및이벤트리스너를연결함 MyActionListener mal= new MyActionListener(); mybutton.addactionlistener(mal);

Overview AWT 일반 AWT 다루기기본 AWT 이벤트다루기 좀더자세히

이벤트 (Event) 이벤트 사용자가 UI 컴포넌트에대해취하는행위로인한사건 이벤트기반프로그래밍 무한루프를돌면서사용자의행위로인한이벤트를청취하여응답하는형태로작동하는프로그래밍

이벤트의처리 java.awt.event AWT 컴포넌트에서발생하는다양한이벤트를처리하기위한인터페이스와클래스제공함 xxxlistener, xxxevent, xxxadapter Interface Class 위임형이벤트처리모델 컴포넌트 ( 이벤트소스 ) 에특정이벤트를처리하기위한객체 ( 이벤트리스너 ) 를따로등록함

이벤트의종류 Low-Level 이벤트와 Semantic 이벤트 Low-Level 이벤트사용자입력이나컴포넌트고유의기능에서생기는시스템레벨의이벤트 Semantic 이벤트 Low-Level 이벤트를처리해서만든 2 차적이벤트 ( 예 ) 마우스클릭 -> 마우스누름, 마우스뗌의 2 가지 Low-Level 이벤트발생 => ActionEvent 로처리 Low-Level 이벤트종류 java.awt.event.componentevent java.awt.event.focusevent java.awt.event.keyevent java.awt.event.mouseevent java.awt.event.windowevent Semantic 이벤트종류 java.awt.event.actionevent java.awt.event.adjustmentevent java.awt.event.itemevent java.awt.event.textevent 실제이벤트처리에있어서두종류의이벤트는구별되지않으며일반적인경우 Semantic 이벤트를처리하는것이좀더효율적임

이벤트리스너호출과정 processevent 컴포넌트에서이벤트발생하면이벤트리스너호출함 processevent processfocusevent processmouseevent FocusListener processkeyevent 보통 Handler 라고함 processcomponentevent 예 ) FocusEvent processevent => processfocusevent => FocusListener 생성후 ID 에따라처리함

이벤트클래스와이벤트리스너 컴포넌트에서발생할수있는이벤트를분류한이벤트클래스들이존재함 이벤트클래스는종류에맞는정보와메소드를가짐 컴포넌트마다발생될수있는이벤트가정해짐 Button 의경우발생가능한이벤트 ActionEvent, ComponentEvent, FocusEvent, KeyEvent, MouseEvent ActionEvent 가발생할수있는컴포넌트 Button, List, MenuItem, TextField 각각에대해서는 API 를참고

이벤트클래스계층구조

이벤트클래스와이벤트리스너 리스너는이벤트처리를위한인터페이스임 xxxevent 클래스는 xxxlistener 인터페이스와대응됨 xxxlistener 에는저수준이벤트를처리하기위한메소드가존재함 예 - KeyEvent 처리를위한 KeyListener void keypressed(keyevent e) void keyreleased(keyevent e) void keytyped(keyevent e)

이벤트처리과정 처리할이벤트를결정함 ActionEvent 을예로들어보자 해당리스너를구현하는클래스를정의함 ActionListener 를구현하는클래스를 MyListener 라하면 Class MyListener implements ActionListner{ } void actionperformed(actionevent e) 라는메소드를구현해야함 리스너마다구현해야하는메쏘드가다름 (API 참고 ) 객체를생성하여해당컴포넌트의이벤트리스너로등록함 this.addactionlistener(new MyListener());

이벤트어댑터 저수준이벤트의편리한처리가가능함 이벤트처리메소드가 2 개이상인리스너인터페이스 (xxxlistener) 들에대해그것을구현한어댑터클래스 (xxxadapter) 가존재함 각이벤트처리메소드는빈블록임 어댑터가있는경우, 리스너를구현하는대신어댑터를상속하는클래스를정의함 Overriding

ActionEvent 와 ActionListener ActionListener 의주요메소드 void actionperformed(actionevent ev) 이벤트가발생하는예 버튼을클릭하는경우 메뉴항목을클릭하는경우 TextField 에서 엔터키 를치는경우 리스트의항목을더블클릭하는경우 ActionEvent 의주요메소드 String getactioncommand() 명령의이름을리턴 Object getsource() EventObject 에서상속된메소드

WindowEvent와 WindowListener WindowListener 의주요메소드 윈도우의상태변화를야기하는경우 void windowactivated(windowevent ev) void windowclosed(windowevent ev) WindowEvent 의주요메소드 int getnewstate() 0 이면보통상태임 int getoldstate() Window getwindow()

ItemEvent 와 ItemListener ItemListener 의주요메소드 void itemstatechanged(itemevent ev) Checkbox, CheckboxMenuItem, Choice, List 에서아이템을선택하거나해제하는경우 ItemEvent 의주요메소드 Object getitem() int getstatechange() String paramstring()

AdjustmentEvent와 AdjustmentListener AdjustmentListener 의주요메소드 void adjustmentvaluechanged(adjustmentevent ev) 스크롤바의상태변화가생길때이벤트발생 AdjustmentEvent 의주요메소드 int getvalue() int getadjustmenttype() UNIT_INCREMENT, UNIT_DECREMENT, BLOCK_INCREMENT,BLOCK_DECREMENT, TRACK

KeyEvent 와 KeyListener Keystroke 와관련된이벤트가발생했을때 KeyEvent 발생함 KeyListener 의주요메소드 keypressed(keyevent ev) keyreleased(keyevent ev) keytyped(keyevent ev) KeyEvent 의주요메소드 char getkeychar() int getkeycode() int getkeylocation() static String getkeytext(int keycode) static String getkeymodifierstext(int)

MouseEvent 와관련리스너 마우스와관련된이벤트가발생했을때 MouseEvent 발생함 MouseListener 의주요메소드 mouseclicked(mouseevent ev) mousepressed(mouseevent ev) mousereleased(mouseevent ev) MouseMotionListener 의주요메소드 mousedragged(mouseevent ev) mousemoved(mouseevent ev) MouseEvent 의주요메소드 int getbutton() Point getpoint()

TextEvent 와 FocusEvent TextListener 의메소드 textvaluechanged(textevent ev) TextArea 와 TextFiled 에서텍스트에변화가생겼을때이벤트발생하여리스너가실행됨 FocusListener 의메소드 컴포넌트가입력포거스를얻거나잃을때이벤트가발생하여리스너가실행됨 focusgained(focusevent ev) focuslost(focusevent ev)

Overview AWT 일반 AWT 다루기기본 AWT 이벤트다루기 좀더자세히

그래픽컨텍스트 그래픽작업을하기위한환경을의미함 예 ) 좌표계, 배경색, 전경색, 폰트같은정보 그래픽컨텍스트가관리하는주요특성 그리기작업을할객체 : 그래픽객체가실제그리기작업을할대상객체 좌표계 : 그리기의기준이되는좌표정보 현재클리핑영역 : 클리핑정보 클리핑영역은다시그려야할영역표시 현재색과폰트 : 그리기작업에사용할색과폰트정보

좌표계 일반적인컴퓨터그래픽에서의좌표 왼쪽상단이 (0, 0) X 축은오른쪽으로갈수록증가 Y 축은아래로내려갈수록증가 (0, 0) 컴포넌트 예 ) width * height 사각형의경우 (width-1, height-1)

레이아웃관리자 배치관리 Container 에부착되는컴포넌트의위치를관리 Layout 의종류 BorderLayout BoxLayout CardLayout FlowLayout GridBagLayout GridLayout SprintLayout

레이아웃관리자역할 레이아웃매니저가 없는경우 레이아웃 매니저가 있는경우

레이아웃을지정하는법 1. 레이아웃관리자를생성함 BorderLayout bm= new BorderLayout(); 2. 컴포넌트의레이아웃관리자를설정함 setlayout(bm); 3. 컴포넌트를추가함 add(mybutton); 레이아웃관리자를어떤것으로설정하느냐에따라인자가달라지기도함 자세한내용은 API 에서각 Layout 클래스를참조

BorderLayout 옆의그림과같은레이아웃을구성하게해줌 컴포넌트를추가할때인자를주면원하는위치에위치시킬수있음 public LayoutFrame(){ setlayout(new BorderLayout()); add(new Button("North"), BorderLayout.NORTH); add(new Button("South"), BorderLayout.SOUTH); add(new Button("East"), BorderLayout.EAST); add(new Button("West"), BorderLayout.WEST); add(new Button("Center"), BorderLayout.CENTER); }

색과폰트 색 (Color) 그래픽객체에색을지정할때사용. R, G, B 값과알파값을지정해사용함 주요생성자 Color(float r, float g, float b, float a) Color(int r, int g, int b, int a) 폰트 (Font) 화면에텍스트를출력할때사용되는글자모양이나크기 대표적으로 BOLD, ITALIC, PLAIN 등이있음 주요메소드 getfont(), setfont(font font) 이외의관련메소드는 API 참고

도형그리기 도형내부채우기 : fill 로시작. fillarc, fillrect 도형외곽그리기 : draw 로시작. drawarc, drawrect 도형의종류 Line : 두께 1 인직선 Rect : 직사각형 3Drect : 3 차원으로입체감있는사각형 RoundRect : 모서리둥근사각형 Oval : 타원 Arc : 원호, 원의일부자른모양 Polygon : 다각형. 시작점과끝점이어만듬

선그리기 선그리기 drawline(int x1, int y1, int x2, int y2) 사각형그리기 drawrect(int x, int y, int width, int height) draw3drect(), drawroundrect(), fillrect() 타원과타원호그리기 타원이들어갈직사각형을지정해줌 ( 내접된타원이그려짐 ) 타원의호는 3 시를기준으로시계반대방향으로각을정해줌

문자열그리기 drawstring() 와같은메소드를이용해그림 폰트의특성을 FontMetrics 에담아제공 폰트는가변폭을가져서글자마다폭이틀림

Toolkit 클래스 AWT GUI 툴킷의구현객체의부모클래스임 AWT 의각종컴포넌트생성 시스템의네이티브컴포넌트와연결 추상클래스임 Toolkit.getDefaultToolkit 이나 Component 의 gettoolkit 메소드로객체를얻어사용함 getimage() 는호출즉시이미지객체를반환함 데이터의완전한준비여부는확인하지않음 java.awt.toolkit 주요메소드 Dimension getscreensize() 스크린의전체크기를얻는다 int getscreenresolution() 스크린의해상도를얻는다 (DPI: dots per inch) Image getimage(string filename) 주워진파일의이미지를가져온다 Image getimage(url url) 주어진 URL 의이미지를가져온다

Toolkit 예제 여러정보를얻어오는 toolkit 예제 public void test() { Toolkit toolkit = gettoolkit(); Dimension dim = toolkit.getscreensize(); toolkit.setdynamiclayout(true); add(new Label(" 운영체제 : "+System.getProperty("os.name"))); add(new Label(" 화면크기 : "+dim.getwidth()+" * "+dim.getheight())); add(new Label(" 화면해상도 : "+oolkit.getscreenresolution()+"dpi")); add(new Label(" 가로최대화 : "+toolkit.isframestatesupported(frame.maximized_horiz))); add(new Label(" 세로최대화 : "+toolkit.isframestatesupported(frame.maximized_vert))); add(new Label("Dynamic Layout : "+toolkit.isdynamiclayoutactive())); }

이미지그리기 drawimage(image img, int x, int y, Color bgcolor, ImageObserver obs) 그려질영역을 bgcolor 로채우고 (x, y) 위치에이미지를그림 ImageObserver 이미지자원이크기때문에 ImageObserver 객체는이미지데이터가모두로딩한후 imageupdate() 메소드를호출해이미지를그려줌 이미지축소 / 확대 이미지의축소 / 확대는 drawimage() 메소드의인자값을이용해서쉽게할수있음

이미지자원다루기 자바이외의플랫폼 이미지데이터로딩중다른작업은중단 이미지객체생성시키면데이터도한번에모두로딩 자바플랫폼 ( 비동기적처리 ) 이미지객체생성메소드호출시즉각반환, 배후의스레드가로딩작업처리. 예 ) 이미지데이터가완전히준비되지않은상태의출력작업 자바이외의플랫폼에서는데이터가완전히로딩될때까지기다린후출력작업시행 자바플랫폼에서는현재도달한이미지를가지고출력작업처리

이미지의화면출력 1. 이미지파일의 URL, 파일이름구하기 2. Toolkit 객체구하기 3. 이미지불러오기 사용법 4. 이미지준비하기 ( 추적 ) 5. 이미지출력 생성자내용 URL url = getclass().getresource(file_name); Toolkit toolkit = Toolkit.getDefaultToolkit(); Image img = toolkit.getimage(url); URL url = new URL("http://java.sun.com/docs/books/tutorial/images/wood8.GIF"); imgexample = gettoolkit().getimage(url); Paint 메소드 public void paint(graphics g){ if ( gettoolkit().prepareimage(imgexample, -1, -1, this) == false ) { g.drawstring("wait for Loading", 100, 100); } else { g.drawimage(imgexample, 10, 10, this); } }

이미지버튼만들기 버튼에이미지를삽입해좀더비주얼한버튼만들기 ImageButton.java public void paint(graphics g){ if (ximage == null) super.paint(g); else { /* 이미지를버튼의중앙에그린다. */ g.drawimage( ximage, (getwidth() - ximage.getwidth(this)) /2, (getheight() - ximage.getheight(this)) /2, this ); }

메뉴의구성

메뉴만드는법 1. 메뉴가붙을메뉴바생성 MenuBar mymenubar= new MenuBar(); 2. 메뉴생성 Menu mymenu= new Menu(" 내메뉴 "); 3. 메뉴아이템을만들어메뉴에추가 MenuItem mymenuitem= new MenuItem(" 내아이템 "); mymenu.add(mymenuitem); 4. 메뉴바에메뉴추가 mymenubar.add(mymenu); 5. 프레임에메뉴바를설치 Frame myframe= new Frame(); myframe.setmenubar(mymenubar);

체크박스메뉴... Menu mymenu= new Menu(" 내메뉴 "); CheckboxMenuItem mycheckboxmenuitem= new CheckboxMenuItem(" 내체크박스메뉴 "); mymenu.add(mycheckboxmenuitem);... MenuItem 대신 CheckboxMenuItem 사용

서브메뉴... Menu mymenu= new Menu(" 내메뉴 "); Menu mysubmenu= new Menu(" 내서브메뉴 "); MenuItem mysubmenuitem= new MenuItem(" 내서브메뉴아이템 "); mysubmenu.add(mysubmenuitem); mymenu.add(mysubmenu);... MenuItem 대신 Menu 사용

Exercise Download a WeeklyCalender.jar file and import it. Just fill the blank about layout. buttons, events. file i/o and string processing will be next time saveweekplan(), loadweekplan()