35
Chap12 그그그그 그그그 그그그그그 (GUI) Chap12 그그그그 그그그 그그그그그 (GUI) 12.1 Swing 그 AWT 12.2 AWT 그그그그 그그 그그그 12.3 그그그 (Frame) 12.4 그그 그그그 (Layout Management) 12.5 그그 (Panel) 12.6 그그그그그 그그그 그그 12.7 그그 그그 12.8 그그그 그그

Chap12 그래피컬 사용자 인터페이스 (GUI)

  • Upload
    carys

  • View
    65

  • Download
    0

Embed Size (px)

DESCRIPTION

Chap12 그래피컬 사용자 인터페이스 (GUI). 12.1 Swing 과 AWT 12.2 AWT 패키지와 주요 클래스 12.3 프레임 (Frame) 12.4 배치 관리자 (Layout Management) 12.5 판넬 (Panel) 12.6 판넬에서의 그래픽 사용 12.7 색의 사용 12.8 글꼴의 사용. 12.1 Swing 과 AWT. AWT 프로그램이 실제 실행되는 컴퓨터 ( 운영체제 ) 에서 제공되는 그래픽 컴포넌트 (native peer) 를 이용하여 그래픽을 나타낸다 - PowerPoint PPT Presentation

Citation preview

Page 1: Chap12  그래피컬 사용자 인터페이스 (GUI)

Chap12 그래피컬 사용자 인터페이스 (GUI)

Chap12 그래피컬 사용자 인터페이스 (GUI)

12.1 Swing 과 AWT12.2 AWT 패키지와 주요 클래스12.3 프레임 (Frame)12.4 배치 관리자 (Layout Management)12.5 판넬 (Panel)12.6 판넬에서의 그래픽 사용12.7 색의 사용12.8 글꼴의 사용

Page 2: Chap12  그래피컬 사용자 인터페이스 (GUI)

Chap12 그래피컬 사용자 인터페이스 (GUI)

12.1 Swing 과 AWT

AWT 프로그램이 실제 실행되는 컴퓨터 ( 운영체제 ) 에서 제공되는 그래픽 컴포넌트

(native peer) 를 이용하여 그래픽을 나타낸다 중량 (heavyweight) 컴포넌트 실행되는 시스템에 따라 다른 모양을 나타낸다

SWING 실행되는 시스템과 무관하게 대부분의 그래픽을 자바 시스템 (JVM) 이 처리하여

나타낸다 경량 (lightweight) 컴포넌트 시스템에 상관없이 일관된 모양을 나타낸다 AWT 에 비해 실행시간과 메모리가 많이 요구된다

Page 3: Chap12  그래피컬 사용자 인터페이스 (GUI)

Chap12 그래피컬 사용자 인터페이스 (GUI)

12.1 Swing 과 AWT

AWT 패키지와 SWING 패키지

AppletObject

Dimension

Font

FontMetrics

Color

Graphics

Component Container

LayoutManager

Panel

Window

JApplet

Frame

Dialog

JFrame

JDialog

JComponent 다양한 스윙 컴포넌트

AWT 패키지

SWING 패키지

Page 4: Chap12  그래피컬 사용자 인터페이스 (GUI)

Chap12 그래피컬 사용자 인터페이스 (GUI)

12.1 Swing 과 AWT

SWING 을 이용한 GUI 구축의 예

Page 5: Chap12  그래피컬 사용자 인터페이스 (GUI)

Chap12 그래피컬 사용자 인터페이스 (GUI)

12.2 AWT 패키지와 주요 클래스

12.2.1 java.awt 패키지 GUI 구축을 위한 클래스들의 모임

java.awt 패키지에서 제공되는 클래스들의 유형별 분류

유형구분 클래스명

컴포넌트의 배치와 관련된 클래스

BorderLayout, FlowLayout, GridLayout, GridBagLayout, GridBagConstraints, CardLayout

GUI 구성과 관련된 클래스 Button, Label, Canvas, Checkbox, Choice, Scrollbar, ComponentList, Menu, TextComponent, TextArea, MenuBar, MenuItem, TextField, CheckboxGroup, CheckboxMenuItem, MenuComponent

그래픽 출력과 관련된 클래스 Color, Font, FontMetrics, Rectangle, Point, Polygon, Graphics, Image

컨테이너 클래스 Frame, Panel, Window, Container, FileDialog, Dialog

그 외의 클래스 Insets, Dimension, Toolkit, Event, MediaTracker

Page 6: Chap12  그래피컬 사용자 인터페이스 (GUI)

Chap12 그래피컬 사용자 인터페이스 (GUI)

12.2 AWT 패키지와 주요 클래스

12.2.2 Component 클래스 GUI 구축에 필요로 되는 많은 하위 클래스들을 가지고 있다 . 약 100

여개의 메소드 제공 Component 클래스의 주요 메소드

메소드 이름 설명Image createImage(int width, int height) width, height 크기의 Image 객체를 생성하여 반환Font getFont() 현재 설정된 폰트를 폰트 객체로 반환FontMetrics getFontMetrics(Font font) font 폰트에 관한 FontMetrics 객체를 반환

Color getForeground() 전경색 (foreground) 을 Color 객체로 반환

Dimension getSize() 현재 컴포넌트의 크기를 Dimension 객체로 반환void paint(Graphics g) 현재의 컴포넌트에 Graphics 객체 g 를 이용하여 그림을

그리는 메소드

void repaint() JVM 에게 update() 메소드 호출을 요청한다

void setBackground(Color c) 배경색을 c 로 설정

void setFont(Font f) 폰트를 f 로 설정

void setForeground(Color c) 전경색을 c 로 설정

public void update(Graphics g) 컴포넌트를 배경색으로 채우고 paint() 메소드를 호출한다

Page 7: Chap12  그래피컬 사용자 인터페이스 (GUI)

Chap12 그래피컬 사용자 인터페이스 (GUI)

12.2 AWT 패키지와 주요 클래스

12.2.3 Container 클래스 컴포넌트를 담는 그릇 역할을 하는 클래스 JFrame, JPanel, Japplet, Applet 등의 하위 클래스를 가지고 있다 컨테이너는 서브 (sub) 컨테이너를 가질 수 있다 일반적으로 서브 컨테이너로 JPanel 클래스가 많이 사용된다 컨테이너를 이용한 GUI 구성의 예 (AWT 컴포넌트 사용 )

Page 8: Chap12  그래피컬 사용자 인터페이스 (GUI)

Chap12 그래피컬 사용자 인터페이스 (GUI)

12.2 AWT 패키지와 주요 클래스

Container 클래스의 주요 메소드

메소드 이름 메소드 설명

Component add(Component c) 컴포넌트 c 를 현재의 컨테이너에 추가하고 c 를 반환

Component add(String name, Component c)

컴포넌트 c 를 컨테이너에 추가 . name 은 컴포넌트가 놓일 방향을 지시하는 문자열 객체

void remove(Component c) 컴포넌트 c 를 현재의 컨테이너에서 제거

void setLayout(LayoutManager lm) lm 으 로 지 정 된 배 치 관 리 자 를 현 재 컨 테 이 너 의 배치관리자로 설정

void addContainerListener(ContainerListener cl)

이벤트를 받아들이기 위한 이벤트 리스너를 등록

void removeContainerListener(ContainerListener cl)

이벤트 리스너의 등록을 해제

Page 9: Chap12  그래피컬 사용자 인터페이스 (GUI)

Chap12 그래피컬 사용자 인터페이스 (GUI)

12.3 프레임 (Frame)GUI 를 구축을 위한 프레임 클래스 : JFrame 클래스 생성자

public JFrame() public JFrame(String title)

• title 은 프레임의 제목을 의미

JFrame 클래스의 메소드

메소드 이름 메소드 설명

public Container getContentPane() 프레임에 대한 contentPane 객체를 반환

Page 10: Chap12  그래피컬 사용자 인터페이스 (GUI)

Chap12 그래피컬 사용자 인터페이스 (GUI)

12.3 프레임 (Frame)예제 : FrameTest1.java

예제 : FrameTest2.java

Page 11: Chap12  그래피컬 사용자 인터페이스 (GUI)

Chap12 그래피컬 사용자 인터페이스 (GUI)

12.4 배치 관리자 (Layout Manager)

자바는 컨터이너에 컴포넌트를 배치할 수 있는 다양한 방법을 배치관리자 클래스로 제공FlowLayout, BorderLayout, GridLayout 등 다양한 배치관리자 클래스 제공Container 클래스의 setLayout() 메소드를 사용하여 배치관리자를 설정

Page 12: Chap12  그래피컬 사용자 인터페이스 (GUI)

Chap12 그래피컬 사용자 인터페이스 (GUI)

12.4 배치 관리자 (Layout Manager)

12.4.1 FlowLayout 배치 관리자 배치관리자를 지정하지 않으면 묵시적으로 FlowLayout 으로 지정된다 컴포넌트를 수평 방향으로 배치하는 관리자

생성자

FlowLayout()FlowLayout(int align)FlowLayout(int align, int hgap, int vgap)

• align : 정렬방식을 지정하는 상수 . LEFT, CENTER, RIGHT 를 사용• hgap, vgap : 컴포넌트 사이의 수직 , 수평 간격을 지정하는 값으로서 픽셀단위

Page 13: Chap12  그래피컬 사용자 인터페이스 (GUI)

Chap12 그래피컬 사용자 인터페이스 (GUI)

12.4 배치 관리자 (Layout Manager)

예제 : FlowLayoutDemo.java

Page 14: Chap12  그래피컬 사용자 인터페이스 (GUI)

Chap12 그래피컬 사용자 인터페이스 (GUI)

12.4 배치 관리자 (Layout Manager)

12.4.2 BorderLayout 배치 관리자 컴포넌트를 추가할 때 방향을 지정하여 추가할 수 있는 기능을 제공 .

지정할 수 있는 방향은 East, West, South, North, Center 생성자

BorderLayout()BorderLayout(int hgap, int vgap)

• hgap, vgap : 컴포넌트들 사이의 간격을 의미하며 픽셀단위로 지정

컴포넌트를 추가하는 add() 메소드에 방향을 지정

void add(String name, Component comp)

Page 15: Chap12  그래피컬 사용자 인터페이스 (GUI)

Chap12 그래피컬 사용자 인터페이스 (GUI)

12.4 배치 관리자 (Layout Manager)

예제 : BorderLayoutDemo.java

Page 16: Chap12  그래피컬 사용자 인터페이스 (GUI)

Chap12 그래피컬 사용자 인터페이스 (GUI)

12.4 배치 관리자 (Layout Manager)

12.4.3 GridLayout 배치 관리자 컴포넌트를 행과 열을 가진 배열 형태로 배치 생성자

GridLayout()GridLayout(int rows, int cols)GridLayout(int rows, int cols, int hgap, int vgap)

• rows, cols : 배치할 행과 열• hgap, vgap : 컴포넌트 사이의 간격 . 픽셀 단위

Page 17: Chap12  그래피컬 사용자 인터페이스 (GUI)

Chap12 그래피컬 사용자 인터페이스 (GUI)

12.4 배치 관리자 (Layout Manager)

예제 : GridLayoutDemo.java

Page 18: Chap12  그래피컬 사용자 인터페이스 (GUI)

Chap12 그래피컬 사용자 인터페이스 (GUI)

12.5 판넬 (Panel)그릇 (container) 역할을 하는 클래스 : JPanel 클래스 생성자

JPanel()

예제 : JPanelDemo.java

Page 19: Chap12  그래피컬 사용자 인터페이스 (GUI)

Chap12 그래피컬 사용자 인터페이스 (GUI)

12.6 판넬에서의 그래픽 사용

판넬 (JPanel 객체 ) 의 역할

다양한 컴포넌트를 배치하는 그릇역할 다양한 그래픽을 나타낼 수 있는 기능도 제공

판넬에 그래픽을 나타내기 위한 프로그램이 작성순서

① 클래스가 JPanel 클래스로부터 상속

② 상위 클래스인 JComponent 클래스에서 선언된 paintComponent(Graphics g) 메소드를 반드시 오바라이딩 하여야 한다 .

③ paintComponent(Graphics g) 메소드 내에 그래픽 기능을 기술한다 ( 매개 변수로 받은 Graphics 객체의 메소드를 이용하여 기술 )

Page 20: Chap12  그래피컬 사용자 인터페이스 (GUI)

Chap12 그래피컬 사용자 인터페이스 (GUI)

12.6 판넬에서의 그래픽 사용

paintComponent() 메소드 : 상위 클래스인 JComponent 클래스에 선언 protected void paintComponent(Graphics g)

이 메소드는 JVM 에 의해 자동으로 실행되는 메소드이다 . 즉 판넬 객체가 나타날 때 마다 JVM 은 이 메소드를 자동으로 호출한다 . JVM 은 이 메소드를 호출할 때 , 해당 판넬에 그래픽을 나타낼 수 있는 Graphics 객체를 매개변수로하여 호출한다 .

판넬 클래스를 이용하여 그래픽을 나타내는 전형적인 예

......................... class DrawTest extends JPanel { // JPanel 클래스로부터 상속 protected void paintComponent(Graphics g) { // 메소드 오버라이딩 super.paintComponent(g); // 상위클래스의 paintComponent() 메소드 호출 g.drawString(.........); // 다양한 그래픽 기능 사용 g.drawLine(..........); g.drawRect(...........); } }

Page 21: Chap12  그래피컬 사용자 인터페이스 (GUI)

Chap12 그래피컬 사용자 인터페이스 (GUI)

12.6 판넬에서의 그래픽 사용 Graphics 클래스의 주요 메소드

메소드 이름 설명void drawArc(int x, int y, int w, int h, int startAngle, int endAngle)

startAngle 과 endAngle 로 지정된 각도를 가지는 원호를 그린다

void drawImage(Image img, int x, int y, imageObserver io)

img 로 지정된 이미지를 애플릿의 x,y좌표에 그린다

viod drawLine(int x0, int y0, int x1, int y1) x0,y0 부터 x1,y1 까지 라인을 그린다

void drawOval(int x, int y, int w, int h) x,y 좌표에 w,h 의 폭과 높이를 가진 타원을 그린다

void drawPolygon(int x[], int y[], int n) x[] 와 y[] 배열의 각 점을 좌표로 하여 n 개의 코너점을 가진 다각형을 그린다

void drawRect(int x, int y, int w, int h) x,y 좌표에 w,h 의 폭과 높이를 가진 사각형을 그린다

void drawString(String str, int x, int y) 문자열을 x,y 좌표에 그린다

Page 22: Chap12  그래피컬 사용자 인터페이스 (GUI)

Chap12 그래피컬 사용자 인터페이스 (GUI)

12.6 판넬에서의 그래픽 사용 Graphics 클래스의 주요 메소드 - 계속

메소드 이름 설명

void fillArc(int x, int y, int w, int h, int startAngle, int endAngle)

속이 찬 원호를 그린다

void fillOval(int x[], int y[], int n) 속이 찬 타원을 그린다

void fillPolygon(int x[], int y[], int n) 속이 찬 다각형을 그린다

void fillRect(int x, int y, int w, int h) 속이 찬 사각형을 그린다

Color getColor() 현재 객체의 색을 Color 객체로 반환

Font getFont() 현재 객체의 폰트를 Font 객체로 반환

FontMetrics getFontMetrics() 현 재 객 체 의 폰 트 정 보 를 FontMetrics 객체로 반환

void setColor(Color color) 현재 객체의 색을 color 로 설정

Page 23: Chap12  그래피컬 사용자 인터페이스 (GUI)

Chap12 그래피컬 사용자 인터페이스 (GUI)

12.6 판넬에서의 그래픽 사용예제 : GraphicsLine.java

예제 : GraphicsRectangles.java

Page 24: Chap12  그래피컬 사용자 인터페이스 (GUI)

Chap12 그래피컬 사용자 인터페이스 (GUI)

12.6 판넬에서의 그래픽 사용

예제 : GraphicsCircle.java

Page 25: Chap12  그래피컬 사용자 인터페이스 (GUI)

Chap12 그래피컬 사용자 인터페이스 (GUI)

12.6 판넬에서의 그래픽 사용Dimension 클래스

그래픽을 애플릿의 크기에 따라 상대적인 위치에 나타내기 위해 애플릿의 크기 정보를 제공하는 Dimension 클래스를 이용

애플릿의 폭과 높이를 제공하는 클래스

생성자

Dimension(Dimension d)Dimension(int w, int h)

• d : Dimension 객체• w,h : 애플릿의 폭과 높이

Page 26: Chap12  그래피컬 사용자 인터페이스 (GUI)

Chap12 그래피컬 사용자 인터페이스 (GUI)

12.6 판넬에서의 그래픽 사용

예제 : DynamicRectangle.java

Page 27: Chap12  그래피컬 사용자 인터페이스 (GUI)

Chap12 그래피컬 사용자 인터페이스 (GUI)

12.7 색의 사용자바는 색에 관한 기능을 가지는 java.awt.Color 클래스를 제공그래픽 객체에 색을 설정하기 위해서는 Color 객체를 생성한 다음 setColor() 메소드를 사용하여 설정 색을 설정하는 예

....public void paint(Graphics g) { ... Color c = Color.orange; g.setColor(c); g.fillRect(100, 10, 60, 50);}

Page 28: Chap12  그래피컬 사용자 인터페이스 (GUI)

Chap12 그래피컬 사용자 인터페이스 (GUI)

12.7 색의 사용 Color 클래스의 생성자

Color(int red, int green, int blue)Color(float r, float g, float b)Color(int rgb)

Color 클래스의 상수

black (0, 0, 0) blue (0, 0, 255)cyan (0, 255, 255) darkGray (64, 64, 64)gray (128, 128, 128) green (0, 255, 0)lightGray (192, 192, 192) magenta (255, 0, 255)orange (255, 200, 0) pink (255, 175, 175)red (255, 0, 0) white (255, 255,

255)yellow (255, 255, 0)

Page 29: Chap12  그래피컬 사용자 인터페이스 (GUI)

Chap12 그래피컬 사용자 인터페이스 (GUI)

12.7 색의 사용 Color 클래스의 주요 메소드

메소드 이름 설명Color brighter() 현 재 객 체 의 색 보 다 한 단 계 밝 은 색 의 Color

객체를 반환Color darker() 현재 객체의 색보다 한 단계 어두운 색의 Color

객체를 반환static Color decode(String str)throws NumberFormatException

문자열 str 과 동일한 Color 객체를 반환

booleanequals(Object obj) 현재의 객체와 obj 로 지정된 객체가 같은 색을 가지면 true, 아니면 false 를 반환

int getRed() 현재 객체의 R(red) 값을 반환

int getGreen() 현재 객체의 G(green) 값을 반환

int getBlue() 현재 객체의 B(blue) 값을 반환

int getRGB() 현재 객체의 RGB 값을 반환

Page 30: Chap12  그래피컬 사용자 인터페이스 (GUI)

Chap12 그래피컬 사용자 인터페이스 (GUI)

12.7 색의 사용예제 : ColorFont.java

예제 : ColorExam.java

Page 31: Chap12  그래피컬 사용자 인터페이스 (GUI)

Chap12 그래피컬 사용자 인터페이스 (GUI)

12.8 글꼴 (Font) 의 사용애플릿에 대한 텍스트 출력을 객체로 취급애플릿에 텍스트를 출력하기 위해서는 Graphics 클래스의 drawString() 메소드 사용출력되는 그래픽 ( 텍스트 ) 에 폰트를 지정하기 위해서는 Font 객체를 생성한 다음 setFont() 메소드를 사용하여 설정

사용 예......public void paint(Graphics g) { ..... Font font = new Font("Serif", Font.ITALIC, 36); g.setFont(font); g.drawString("JAVA APPLET", 100, 50); ....

}

Page 32: Chap12  그래피컬 사용자 인터페이스 (GUI)

Chap12 그래피컬 사용자 인터페이스 (GUI)

12.8 글꼴 (Font) 의 사용폰트 관련 클래스 Font 클래스 : 다양한 글꼴에 관한 정보 제공 FontMetrics : 글꼴의 크기에 관한 정보 제공 Font 클래스 생성자

Font(String name, int style, int fontsize)

• name : 글꼴의 이름으로서 Serif, SansSerif, Monospaced 가 많이 사용• style : 상수로서 BOLD, ITALIC, PlAIN 이 사용• fontsize : 글꼴의 크기

FontMetrics 클래스 생성자

FontMetrics(Font font)

• font : 정보를 얻고자 하는 글꼴의 이름

Page 33: Chap12  그래피컬 사용자 인터페이스 (GUI)

Chap12 그래피컬 사용자 인터페이스 (GUI)

12.8 글꼴 (Font) 의 사용Font 클래스의 주요 메소드

FontMetrics 클래스의 주요 메소드

메소드 이름 설명String getName() 글꼴의 이름을 반환int getSize() 글꼴의 크기를 반환int getStyle() 글꼴의 스타일을 반환

메소드 이름 설명int charWidth(char c) 문자 c 의 폭을 반환int charWidth(int i) i 값을 문자로 변환한 다음 문자의 폭을 반환int getAscent() acent 를 반환

int getDescent() descent 를 반환int getHeight() height 를 반환int getLeading() leading 을 반환int stringWidth(String str) 문자열 str 의 폭을 반환

Page 34: Chap12  그래피컬 사용자 인터페이스 (GUI)

Chap12 그래피컬 사용자 인터페이스 (GUI)

12.8 글꼴 (Font) 의 사용

FontMetrics 가 제공하는 글꼴 크기에 관한 정보

App머리선

기준선

꼬리선

텍스트 다음줄getHeight()

getAscent()

getDescent() getLeading()

Page 35: Chap12  그래피컬 사용자 인터페이스 (GUI)

Chap12 그래피컬 사용자 인터페이스 (GUI)

12.8 글꼴 (Font) 의 사용예제 : SetFont.java

예제 : FontExample.java