<4D F736F F F696E74202D20C1A63233C0E520B1D7B7A1C7C820C7C1B7CEB1D7B7A1B9D628B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Similar documents
PowerPoint Presentation

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

<4D F736F F F696E74202D20C1A63139C0E520B9E8C4A120B0FCB8AEC0DA28B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63236C0E520BED6C7C3B8B428B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

PowerPoint Presentation

8장.그래픽 프로그래밍

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

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

9장.key

PowerPoint 프레젠테이션

<4D F736F F F696E74202D20C1A63138C0E520C0CCBAA5C6AE20C3B3B8AE28B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63230C0E520BDBAC0AE20C4C4C6F7B3CDC6AE203128B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

11장.key

PowerPoint 프레젠테이션

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

Microsoft PowerPoint - 04-UDP Programming.ppt

슬라이드 1

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

Microsoft PowerPoint - 14주차 강의자료

PowerPoint Presentation

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

10장.key

No Slide Title

강의자료

Microsoft PowerPoint - Java-03.pptx

Chap12

05-class.key

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

PowerPoint Presentation

PowerPoint Presentation

Cluster management software

No Slide Title

그래픽 chapter.1 스윙컴포넌트그리기 컴포넌트는자신의모양을스스로그린다 X-window, MFC, C# GUI, Android 등 GUI 플랫폼에서 GUI 컴포넌트는스스로자신의모양을그린다. 자바의스윙도예외는아니다. JButton은버튼모양을그리는코드를내장하고, JCo

PowerPoint Presentation

Java Programing Environment

Microsoft PowerPoint - Java7.pptx

Microsoft PowerPoint - 12장

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

쉽게 풀어쓴 C 프로그래밍

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

쉽게 풀어쓴 C 프로그래밍

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

PowerPoint Presentation

Microsoft PowerPoint - 06-Chapter09-Event.ppt

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

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

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

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

PowerPoint Presentation

PowerPoint Presentation

Network Programming

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

PowerPoint 프레젠테이션

쉽게 풀어쓴 C 프로그래밍

5장.key

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

슬라이드 1

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

Cluster management software

중간고사

JAVA PROGRAMMING 실습 08.다형성

슬라이드 1

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

Design Issues

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

11-GUI.key

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

Microsoft PowerPoint - 2강

10-Java Applet

오버라이딩 (Overriding)

쉽게

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

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

JavaPrintingModel2_JunoYoon.PDF

쉽게 풀어쓴 C 프로그래밍

JMF3_심빈구.PDF

쉽게 풀어쓴 C 프로그래밍

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

PowerPoint 프레젠테이션

PowerPoint Presentation

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

PowerPoint Presentation

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

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

02 C h a p t e r Java

PowerPoint 프레젠테이션

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

PowerPoint 프레젠테이션

01-OOPConcepts(2).PDF

PowerPoint 프레젠테이션

<4D F736F F F696E74202D20C1A63234C0E520C0D4C3E2B7C228B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

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

PowerPoint Presentation

PowerPoint 프레젠테이션

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

class Sale void makelineitem(productspecification* spec, int qty) SalesLineItem* sl = new SalesLineItem(spec, qty); ; 2. 아래의액티비티다이어그램을보고 Java 또는 C ++,

쉽게 풀어쓴 C 프로그래밍

JAVA PROGRAMMING 실습 09. 예외처리

rmi_박준용_final.PDF

쉽게 풀어쓴 C 프로그래밊

Transcription:

Power Java 제 23 장그래픽프로그래밍 이번장에서학습할내용 자바에서의그래픽 기초사항 기초도형그리기 색상 폰트 Java 2D Java 2D를이용한그리기 Java 2D 를이용한채우기 도형회전과평행이동 자바를이용하여서화면에그림을그려봅시다.

자바그래픽데모 자바그래픽의두가지방법 자바그래픽 AWT Java 2D AWT를사용하면기본적인도형들을쉽게그릴수있다. 어디서나잘실행된다. 커브를그릴수있다. 2차원도형을회전 앤티에일리어싱 그라디언트채우기

간단한 문자열출력 직선 어디에그릴것인가? JFrame 이나 JPanel 에도그릴수있지만우리나름대로의컴포넌트를정의하여보자. 이것을상속받아서우리나름대로의컴포넌트를정의한다.

어떻게그릴것인가? 컴포넌트에무언가를그리려면 paint() 메소드를중복정의한다. paint() 메소드는컴포넌트가화면에그려질때호출된다. 일반적인코드의형태 class MyComponent extends JComponent { public void paint(graphics g) { // 여기에그림을그리는코드를넣는다.

구체적인코드 class MyComponent extends JComponent { public static final int x = 30; public static ti final int y = 80; 문자열출력 public void paint(graphics g) { g.drawstring(" 안녕하세요? 자바프로그래머여러분!", x, y); g.drawline(x, y + 10, x + 200, y + 10); 직선출력 그래픽좌표계

import java.awt.*; import javax.swing.*; // 그림이그려지는컴포넌트를정의 class MyComponent extends JComponent { public static final int x = 30; public static final int y = 80; public void paint(graphics g) { g.drawstring(" 안녕하세요? 자바프로그래머여러분!", x, y); ) g.drawline(x, y + 10, x + 200, y + 10); // 프레임컴포넌트를상속받아서정의 public class MyFrame extends JFrame { public static final int WIDTH = 300; public static final int HEIGHT = 200; public MyFrame() { settitle("myframe"); ") setsize(width, HEIGHT); setdefaultcloseoperation(jframe.exit_on_close); setvisible(true); // MyComponent 객체생성하여프레임에추가 MyComponent c = new MyComponent(); add(c); public static void main(string[] args) { MyFrame frame = new MyFrame();

실행결과 기초도형그리기

직선그리기 사각형그리기 width height

drawroundrect() 타원그리기

호그리기 아래그림과비슷한얼굴을그려보자

import javax.swing.*; import java.awt.event.*; import java.awt.*; class MyComponent extends JComponent { public void paint(graphics g) { g.setcolor(color.yellow); g.filloval(20, 30, 200, 200); g.setcolor(color.black); // 왼쪽눈을그린다. g.drawarc(60, 80, 50, 50, 180, -180); // 오른쪽눈을그린다. g.drawarc(150, 80, 50, 50, 180, -180); // 입을그린다. g.drawarc(70, 130, 100, 70, 180, 180); public class SnowManFace extends JFrame { public SnowManFace() { setsize(280, 300); setdefaultcloseoperation(jframe.exit_on_close); settitle(" 눈사람얼굴 "); setvisible(true); add(new MyComponent()); public static void main(string[] args) { SnowManFace s=new SnowManFace();

색상 java.awt 패키지의일부인 Color 클래스를사용 빛의 3 원색인 Red 성분, Green 성분, Blue 성분이얼마나함유되어있는지를 0 에서 255 까지의수를사용하여나타낸다. import javax.swing.*; import java.awt.event.*; import java.awt.*; class MyPanelextends JPanel implements ActionListener { JButton button; Color color = new Color(0, 0, 0); public MyPanel() { setlayout(new BorderLayout()); button = new JButton(" 색상변경 "); button.addactionlistener(this); add(button, BorderLayout.SOUTH); public void paint(graphics g) { g.setcolor(color); g.fillrect(10, 10, 210, 220);

public void actionperformed(actionevent e) { color = new Color((int) (Math.random()*255.0), (int) (Math.random()*255.0),(int) (Math.random()*255.0)); repaint(); public class ColorTest extends JFrame { public ColorTest() { setsize(240, 300); setdefaultcloseoperation(jframe.exit_on_close); settitle("color Test"); setvisible(true); ibl JPanel panel = new MyPanel(); add(panel); public static void main(string[] args) { ColorTest s = new ColorTest(); 실행결과

색상선택기 import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; import javax.swing.colorchooser.*; public class ColorChooserTest Ch extends JFrame implements ChangeListener { protected JColorChooser color; public ColorChooserTest() { settitle(" 색상선택기테스트 "); setdefaultcloseoperation(jframe.exit_on_close); 록 color = new JColorChooser(); // 생성자호출 color.getselectionmodel().addchangelistener(this); // 리스너등 color.setborder(borderfactory.createtitledborder(" 색상선택 "));

JPanel panel = new JPanel(); panel.add(color); add(panel); pack(); this.setvisible(true); public void statechanged(changeevent e) { Color newcolor = color.getcolor(); public static void main(string[] args) { new ColorChooserTest(); Ch 폰트 폰트를지정하기위해서는 Font 클래스를사용 Font 객체는폰트이름 (Courier, Helvetica,..) 과스타일 (plain, bold, italic,...), 크기 (12 포인트,...) 의 3 가지속성 Font font = new Font("Courier", Font.PLAIN, 10); // plain 형식이고크기는 10 포인트

폰트의종류 import javax.swing.*; import java.awt.event.*; import java.awt.*; class MyComponent extends JComponent { Font f1, f2, f3, f4, f5; public MyComponent() { f1 = new Font("Serif", Font.PLAIN, 20); f2 = new Font("San Serif", Font.BOLD, 20); f3 = new Font("Monospaced", Font.ITALIC, 20); f4 = new Font("Dialog", Font.BOLD Font.ITALIC, 20); f5 = new Font("DialogInput", Font.BOLD, 20); public void paint(graphics g) { g.setfont(f1); g.drawstring("serif 20 points PLAIN", 10, 50); g.setfont(f2); g.drawstring("sanserif 20 points BOLD", 10, 70); gsetfont(f3); g.setfont(f3); g.drawstring("monospaced 20 points ITALIC", 10, 90); g.setfont(f4); g.drawstring("dialog 20 points BOLD + ITALIC", 10, 110); g.setfont(f5); g.drawstring("dialoginput 20 points BOLD", 10, 130);

public class FontTest extends JFrame { public FontTest() { setsize(500, 200); setdefaultcloseoperation(jframe.exit_on_close); ON CLOSE); settitle("font Test"); setvisible(true); JPanel panel = new MyPanel(); add(panel); public static void main(string[] args) { FontTest s = new FontTest(); Java 2D

Java 2D 를이용한그리기 public void paint(graphics g) { Graphics2D g2 = (Graphics2D) g; g2.drawline(100, 100, 300, 300); g2.drawrect(10, 10, 100, 100);... Java 2D 를이용한그리기

사각형그리기 Shape r1 = new Rectangle2D.Float(10, 10, 50, 60); g2.draw(r1); import java.util.*; import javax.swing.*; import java.awt.event.*; awt import java.awt.*; import java.awt.geom.*; public class MoreShapes extends JFrame { public MoreShapes() { setsize(600, 130); settitle("java 2D Shapes"); setdefaultcloseoperation(jframe.exit_on_close); JPanel panel = new MyPanel(); add(panel); setvisible(true); public static void main(string[] args) { new MoreShapes();

class MyPanel extends JPanel { ArrayList<Shape> shapearray = new ArrayList<Shape>(); public MyPanel() { Shape s; // 사각형 s = new Rectangle2D.Float(10, 10, 70, 80); shapearray.add(s); // 둥근사각형 s = new RoundRectangle2D.Float(110, 10, 70, 80, 20, 20); shapearray.add(s); // 타원 s = new Ellipse2D.Float(210, 10, 80, 80); shapearray.add(s); (); // 원호 : Arc2D.OPEN s = new Arc2D.Float(310, 10, 80, 80, 90, 90, Arc2D.OPEN); shapearray.add(s); add(s); // 원호 Arc2D.CHORD s = new Arc2D.Float(410, 10, 80, 80, 0, 180, Arc2D.CHORD); shapearray.add(s); add(s); // 원호 Arc2D.PIE s = new Arc2D.Float(510, 10, 80, 80, 45, 90, Arc2D.PIE); shapearray.add(s); public void paint(graphics g) { Graphics2D g2 = (Graphics2D) g; // 앤티에일리어싱을설정한다. g2.setrenderinghint(renderinghints.key_antialiasing, RenderingHints.VALUE_ANTIALIAS_ON); g2.setcolor(color.black); g2.setstroke(new BasicStroke(3)); for (Shape s : shapearray) g2.draw(s);

Q & A