Part 5 사용자 인터페이스 Chapter 14 : 그래피컬 사용자 인터페이스 Chapter 15 : 이벤트 처리 5부에서는 자바의 사용자 인터페이스에 관해 기술하였다. 14장에서는 GUI 작성을 위한 컴포넌트 생성 방법과 다양한 그래픽 기능을 설명하였다. 15장에서는 GUI에서 발생하는 이벤트 처리를 위한 절차와 방법들을 자세하게 설명하고 있다. 16장에서는 스윙 컴포넌트를 사용한 GUI 구축과 이벤트 처리방법에 관해 기술하고 있다.
그래피컬 사용자 인터페이스 CHAPTER 14 Section 1 AWT와 스윙(Swing) Section 3 프레임(Frame) Section 4 배치관리자(Layout Manager) Section 5 패널(Panel) Section 6 패널에서의 그래픽 사용 Section 7 색의 사용 Section 8 글꼴(Font)의 사용
GUI(Graphical User Interface) Section 1 AWT와 Swing GUI(Graphical User Interface) 응용 프로그램이나 웹에서 사용자가 접속하는 부분 자바는 GUI를 두 가지 형태로 제공 AWT Swing
Section 1 AWT와 Swing GUI : AWT 프로그램이 실제 실행되는 컴퓨터(운영체제)에서 제공되는 그래픽 컴포넌트(native peer)를 이용하여 그래픽을 나타낸다 중량(heavyweight) 컴포넌트 실행되는 시스템에 따라 다른 모양을 나타낸다
SWING 실행되는 시스템과 무관하게 대부분의 그래픽을 자바 시스템(JVM)이 처리하여 나타낸다 Section 1 AWT와 Swing SWING 실행되는 시스템과 무관하게 대부분의 그래픽을 자바 시스템(JVM)이 처리하여 나타낸다 경량(lightweight) 컴포넌트 시스템에 상관없이 일관된 모양을 나타낸다 AWT에 비해 실행시간과 메모리가 많이 요구된다
Section 1 AWT와 Swing AWT 패키지와 Swing 패키지
java.awt 패키지 Section 2 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
Component 클래스 GUI 관련 클래스의 최상위 클래스 Section 2 AWT 패키지와 주요 클래스 Component 클래스 GUI 관련 클래스의 최상위 클래스 대부분의 GUI 클래스들이 Component 클래스의 하위 클래스이다 Component 클래스는 약 100여 개의 메소드를 제공
Component 클래스의 주요 메소드 Section 2 AWT 패키지와 주요 클래스 메소드 이름 설명 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() 메소드를 호출한다
Container 클래스 컴포넌트를 담는 그릇 역할을 하는 클래스 Section 2 AWT 패키지와 주요 클래스 Container 클래스 컴포넌트를 담는 그릇 역할을 하는 클래스 JFrame, JPanel, Japplet, Applet 등의 하위 클래스를 가지고 있다 컨테이너는 서브(sub) 컨테이너를 가질 수 있다 일반적으로 서브 컨테이너로 JPanel 클래스가 많이 사용된다
Container 클래스의 메소드 Section 2 AWT 패키지와 주요 클래스 메소드 이름 메소드 설명 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) 이벤트 리스너의 등록을 해제
GUI를 구축을 위한 프레임 클래스 : JFrame 클래스 Section 3 프레임(Frame) GUI를 구축을 위한 프레임 클래스 : JFrame 클래스 JFrame 클래스는 Component → Container → Window → Frame → JFrame 형태로 상속된 클래스
GUI를 구축을 위한 프레임 클래스 : JFrame 클래스 Section 3 프레임(Frame) GUI를 구축을 위한 프레임 클래스 : JFrame 클래스
GUI를 구축을 위한 프레임 클래스 : JFrame 클래스 Section 3 프레임(Frame) GUI를 구축을 위한 프레임 클래스 : JFrame 클래스
GUI를 구축을 위한 프레임 클래스 : JFrame 클래스 Section 3 프레임(Frame) GUI를 구축을 위한 프레임 클래스 : JFrame 클래스
Section 4 배치 관리자(Layout Manager) 자바는 컨터이너에 컴포넌트를 배치할 수 있는 다양한 방법을 배치관리자 클래스로 제공 FlowLayout, BorderLayout, GridLayout 등 다양한 배치관리자 클래스 제공 Container 클래스의 setLayout() 메소드를 사용하여 배치관리자를 설정
Section 4 배치 관리자(Layout Manager) 배치 관리자 : FlowLayout 배치관리자를 지정하지 않으면 묵시적으로 FlowLayout으로 지정 컴포넌트를 수평 방향으로 배치하는 관리자
Section 4 배치 관리자(Layout Manager) 배치 관리자 : FlowLayout
Section 4 배치 관리자(Layout Manager) 배치 관리자 : BorderLayout 컴포넌트를 추가할 때 방향을 지정하여 추가할 수 있는 기능을 제공. 지정할 수 있는 방향은 East, West, South, North, Center
Section 4 배치 관리자(Layout Manager) 배치 관리자 : BorderLayout
Section 4 배치 관리자(Layout Manager) 배치 관리자 : GridLayout 컴포넌트를 행과 열을 가진 배열로 배치
Section 4 배치 관리자(Layout Manager) 배치 관리자 : GridLayout
패널 : Jpanel 클래스 GUI 구축 시 Container 안에 다시 조그만 쟁반(접시) 역할을 하는 클래스 Section 5 패널(Panel) 패널 : Jpanel 클래스 GUI 구축 시 Container 안에 다시 조그만 쟁반(접시) 역할을 하는 클래스
Section 5 패널(Panel) 패널 : Jpanel 클래스
패널(JPanel 객체)의 역할 다양한 컴포넌트를 배치하는 그릇역할 다양한 그래픽을 나타낼 수 있는 기능도 제공 Section 6 패널에서의 그래픽 사용 패널(JPanel 객체)의 역할 다양한 컴포넌트를 배치하는 그릇역할 다양한 그래픽을 나타낼 수 있는 기능도 제공
패널에 그래픽을 나타내기 위한 프로그램이 작성순서 Section 6 패널에서의 그래픽 사용 패널에 그래픽을 나타내기 위한 프로그램이 작성순서 ① 클래스가 JPanel 클래스로부터 상속 ② 상위 클래스인 JComponent 클래스에서 선언된 paintComponent(Graphics g) 메소드를 반드시 오바라이딩 하여야 한다. ③ paintComponent(Graphics g) 메소드 내에 그래픽 기능을 기술한다(매개 변수로 받은Graphics 객체의 메소드를 이용하여 기술) 위의 과정을 이해하기 위해서는 paintComponent(Graphics g) 메소드 메소드의 매개변수로 사용되는 Graphics 클래스에 관해 알아야 한다
패널에서의 그래픽 사용 : paintComponent(Graphics g) 메소드 Section 6 패널에서의 그래픽 사용 패널에서의 그래픽 사용 : paintComponent(Graphics g) 메소드 paintComponent() 메소드는 상위 클래스인 JComponent 클래스에 선언된 메소드 JVM에 의해 자동으로 실행되는 메소드 패널 객체가 나타날 때마다 JVM은 이 메소드를 자동으로 호출 JVM은 이 메소드를 호출할 때, 해당 패널에 그래픽을 나타낼 수 있는 Graphics 객체를 매개변수로 하여 호출
패널에서의 그래픽 사용 : Graphics 클래스 Section 6 패널에서의 그래픽 사용 패널에서의 그래픽 사용 : Graphics 클래스 java.awt 패키지에 포함된 클래스(java.awt.Graphics) Graphics 클래스는 윈도에 다양한 그래픽을 나타낼 수 있는 많은 메소드를 제공
패널에서의 그래픽 사용 : Graphics 클래스의 주요 메소드 Section 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 좌표에 그린다
패널에서의 그래픽 사용 : Graphics 클래스의 주요 메소드 Section 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로 설정
Section 6 패널에서의 그래픽 사용 패널에서의 그래픽 사용
Section 6 패널에서의 그래픽 사용 패널에서의 그래픽 사용
Section 6 패널에서의 그래픽 사용 패널에서의 그래픽 사용
색의 사용 자바는 색에 관한 기능을 가지는 java.awt.Color 클래스를 제공 Section 7 색의 사용 색의 사용 자바는 색에 관한 기능을 가지는 java.awt.Color 클래스를 제공 그래픽 객체에 색을 설정하기 위해서는 Color 객체를 생성한 다음 setColor() 메소드를 사용하여 설정
Section 7 색의 사용 색의 사용 : Color 클래스
색의 사용 : Color 클래스의 주요 메소드 Section 7 색의 사용 메소드 이름 설명 Color brighter() 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값을 반환
Section 7 색의 사용 색의 사용 : Color 클래스
Section 7 색의 사용 색의 사용
글꼴의 사용 Graphics 클래스의 setFont(Font font) 메소드를 이용하여 출력할 텍스트의 글꼴을 지정 Section 8 글꼴(Font)의 사용 글꼴의 사용 Graphics 클래스의 setFont(Font font) 메소드를 이용하여 출력할 텍스트의 글꼴을 지정 setFont() 메소드의 매개변수인 Font 클래스의 객체를 이용하여 폰트 지정
Section 8 글꼴(Font)의 사용 글꼴의 사용 : Font 클래스 setFont() 메소드의 매개변수로 사용
Section 8 글꼴(Font)의 사용 글꼴의 사용 : Font 클래스
Section 8 글꼴(Font)의 사용 글꼴의 사용
AWT와 스윙(Swing) ① 응용 프로그램에서 사용자가 접속하는 부분을 GUI라고 한다. Chapter 14 학습정리 AWT와 스윙(Swing) ① 응용 프로그램에서 사용자가 접속하는 부분을 GUI라고 한다. ② 자바 언어는 초기에 AWT라는 GUI 패키지를 제공하였다. 이 클래스들은 그래픽을 실행되는 시스템의 그래픽 컴포넌트를 이용하는 방법을 사용하였기 때문에, 실행되는 시스템에 따라 조금씩 다르게 나타나는 단점이 있다. ③ Swing GUI 패키지는 실행되는 시스템의 그래픽 컴포넌트와는 무관하게 JVM이 모든 그래픽을처리한다. 이 방법은 실행시간이 AWT 방법에 비해 더 소요되지만, 실행되는 시스템에 상관없이 일관된 형태의 GUI를 제공할 수 있는 장점이 있다.
AWT 패키지와 주요 클래스 ① AWT 패키지에는 GUI 구축을 위한 다양한 클래스들을 제공하고 있다. Chapter 14 학습정리 AWT 패키지와 주요 클래스 ① AWT 패키지에는 GUI 구축을 위한 다양한 클래스들을 제공하고 있다. ② Component 클래스는 약 100여 개의 메소드를 제공하는 추상 클래스로서 대부분의 GUI 관련클래스들이 Component 클래스의 하위 클래스이다. ③ Container 클래스는 쟁반 역할을 하는 클래스로서 다른 GUI 컴포넌트들을 쟁반에 담아 나타내는 역할을 수행한다
Chapter 14 학습정리 프레임(Frame)과 배치 관리자 ① 일반적인 응용 프로그램 구축 시 GUI 부분을 작성하기 위해 프레임을 사용한다. 자바는 JFrame 클래스를 제공한다. ② 자바는 쟁반 역할을 하는 클래스로 Container 클래스와 JPanel 클래스를 제공하고 있다. 일반적으로 프레임에 하나의 Container 클래스 객체를 배정하고, 하나의 Container 클래스 객체에는 다수 개의 JPanel 객체를 배정한다. ③ 자바는 쟁반 클래스에 객체를 배치하기 위해 배치관리자를 클래스로 제공하고 있다. 자바는 배치관리자의 특성에 따라 FlowLayout, BorderLayout, GridLayout 클래스를 제공하고 있다.
Chapter 14 학습정리 그래픽의 사용 ① 패널 객체에는 다양한 그래픽을 표현할 수 있다. 일반적으로 패널 객체에 그래픽을 나타내기위해서는 paintComponent(Graphics g) 메소드를 이용한다. 이 메소는 패널 객체가 생성될 때자동으로 호출되는 메소드이다. ② paintComponent(Graphics g) 메소드의 매개변수로 지정된 Graphics 클래스의 객체를 이용하여패널에 그래픽을 출력한다. ③ 컬러와 폰트를 설정하여 도형과 문자열의 출력이 가능하다..