- 다각형 그리기
 → 자바에서는 여러 개의 변으로 구성된 다각형은 연속된 점으로 정의되어, 각 점을 연결하는 직선들로 구성된다.
 → java.awt 패키지 내의 Polygon 클래스는 다각형을 그릴 때 사용한다.
 → Graphics 클래스 내의 다각형 그리기 메소드
 → 예제

// 세 개의 다각형을 그리는 프로그램
import
 java.applet.Applet;
import java.awt.*;

public class Polygons extends Applet
{
  private int[] xArray1 = {2050806832};
  private int[] yArray1 = {5027508080};
  private int[] xArray2 = {120150180168132};
  private int[] yArray2 = {5027508080};
  private Polygon aPolygon = new Polygon();

  public void paint(Graphics g)
  {
    g.drawPolygon(xArray1, yArray1, 5);
    g.fillPolygon(xArray2, yArray2, 5);
    aPolygon.addPoint(22027);
    aPolygon.addPoint(22080);
    aPolygon.addPoint(25080);
    aPolygon.addPoint(25057);
    aPolygon.addPoint(28080);
    aPolygon.addPoint(31080);
    aPolygon.addPoint(31027);
    aPolygon.addPoint(28027);
    aPolygon.addPoint(28050);
    aPolygon.addPoint(25027);
    g.fillPolygon(aPolygon);
  }
}

 → 실행 결과

 



- 열린 다각형
 → 열린 다각형에서는 마지막 점과 시작점이 연결되지 않는다.
 → 열린 다각형은 다음의 메소드를 사용하여 그린다.
 → void drawPolyline(int[] xPoints, int[] yPoints, int numOfPoints)
 → 인수 xPoints와 yPoints는 열린 다각형을 구성하는 점들은 x와 y의 좌표를 저장하는 배열이고, numOfPoint는 점의 개수.
 → 예제
// 열린 다각형을 그리는 프로그램
import
 java.applet.Applet;
import java.awt.*;

public class DrawingPolyline extends Applet
{
  private int[] xArray = {13080801601605050190190220220};
  private int[] yArray = {808011011050501401405050140};
   
  public void paint (Graphics g) 
  {
    g.drawPolyline (xArray, yArray, 11);
  }
}

 → 실행결과


- 영역 복사와 삭제
 → copyArea() 메소드
 -> 화면의 특정 영역을 복사하여 다른 위치로 옮긴다.
 -> void copyArea(int x, int y, int width, int height, int dx, int dy);
 -> 점 (x, y)로부터 폭(width), 높이(height)의 직사각형에 해당하는 영역을 점(x, y)로부터 수평거리 dx, 수직거리 dy 만큼 떨어진 위치로 이동시킨다.
 → clearRect() 메소드
 -> 화면의 특정영역을 지운다.
 -> void clearRect(int x, int y, int width, int height)
 -> 인수로 넘겨받은 직사각형 영역을 배경색으로 칠하여 지운다.
 -> 애플릿 윈도우의 전체를 지울 때는 size() 메소드를 이용하여 지울 수 있다.
 -> g.clearRect(0, 0, size().width, size().height);
 -> size() 메소드는 Dimenstion 객체를 반환한다.
 → 예제
// 화면의 특정영역을 복사하고 지우는 프로그램
import
 java.applet.Applet;
import java.awt.Graphics;

public class CopyRectangle extends Applet
{
  public void paint(Graphics g)
  {
    g.drawRect(35206060);
    g.copyArea(35203535900);
    g.fillRect(2102016060);
    g.clearRect(2305012020);
    setSize(410100);
  }
}

 → 실행 결과




- 윈도우의 생성과 이벤트 처리
 윈도우 생성
 → 어플리케이션 프로그램의 윈도우의 생성
 → 윈도우의 구성 요소들은 java.awt 패키지에 클래스로 정의되어 있다.
 → awt는 Abstract Windowing Toolkit의 약어로, awt 패키지 내에는 윈도우를 다루는 여러 도구들이 클래스로 정의되어 있다.
 → 사용자 인터페이스를 위한 윈도우는 Frame 클래스의 객체로 생성된다.
 → Frame 클래스는 Window 클래스의 서브 클래스로 타이틀바(title bar)를 가지고 있고, 크기가 조절되는 윈도우의 클래스이다.
 → 예제
// Frame 클래스로부터 윈도우를 생성하는 프로그램

import
 java.awt.*;
import java.awt.event.*;

// main 함수가 이벤트(메시지)를 들어야 한다.
// 예전의 텍스트 기반의 엔터가 입력되는 시점에 동작하는 것이 아니라(명령의 시작과 끝이 명확)
// 이벤트를 기반으로 한다.(명령의 시작과 끝이 명확하지 않기 때문이다.)

// 다중상속이 되지 않으므로 틀은 상속(extends Frame)받고 
// 이벤트를 처리할 수 있는 객체를 내부적으로 만든다.(구성)
public class MakingWindow extends Frame
{
  public MakingWindow()
  {
    // 생성자 - 여기서는 창의 내용
    super("Making Window");
  }
  // dos는 그래픽 객체가 없어서 창을 띄울수 없으나
  // Java는 그래픽 객체를 만들 수 있다.
  public static void main(String[] args)
  {
    // 자신의 객체를 생성 - 어플리케이션 객체
    MakingWindow w = new MakingWindow();
    // 상속을 받지 않고 구성으로 사용(객체에 다른 객체를 붙인다.)
    // 윈도우 상단의 닫기 박스를 클릭했을 때 윈도우를 닫는 기능.
    w.addWindowListener (new WindowHandler());
    // 가로, 세로 크기
    w.setBounds(150130400350);
    // 화면 출력(true), 화면 삭제(false)
    w.setVisible(true);
  }
  // 윈도우의 WM_PAINT()와 유사
  public void paint(Graphics g)
  {
    // 윈도우에 문자열을 출력시키는 메소드
    g.drawString("This is thd first Application Window"5050);
  }
}
class WindowHandler extends WindowAdapter
{
  // 윈도우의 WM_DESTROY()와 유사
  public void windowClosing(WindowEvent e)
  {
    System.exit(0);
  }
}
 → 실행 결과


- Component 클래스
 → Dos와 윈도우의 가장 큰 차이는 입력이 바뀐다는 것이다.
 -> Dos 환경에서는 키보드 입력 밖에 없었지만
 -> 윈도우로 넘어오면서 이벤트(메시지)로 바뀌었다.
 → Component 클래스는 추상클래스로 객체를 생성할 수 없지만, 서브클래스에서 필요한 속성을 정의해 준다.
 → Component의 서브 클래스들은 컨트롤(control)이라 부르며(container 제외), 사용자는 이 클래스의 객체를 이용하여 프로그램에게 수행할 작업을 지시한다.

 → 예제
/* 사용자 윈도우를 생성하고, Toolkit 객체를 이용하여 화면의 크기를 알아내어 윈도우를 설정하는 프
로그램 */
import
 java.awt.*;
import java.awt.event.*;

public class WindowSizeClass extends Frame
{
  static int theWidth;
  static int theHeight;
  public WindowSizeClass()
  {
    super("WidnowSizeClass");
  }
  public static void main(String[] args)
  {
    WindowSizeClass aWindow = new WindowSizeClass();
    // WindowHandler 클래스와 함께 윈도우를 닫기 위해서 작성
    aWindow.addWindowListener (new WindowHandler());
    // Frame 객체인 aWindow로부터 getTookit() 메소드를 호출하여 얻는다.
    // Window 클래스로 부터 상속받은 메소드
    // Toolkit 클래스는 추상 클래스로 java.awt의 클래스들을 프로그램 실행환경에 연결
    Toolkit aToolkit = aWindow.getToolkit();
    // getScreenSize()는 Toolkit 클래스의 멤버로 Dimension 객체를 돌려준다.
    // Dimension 내의 멤버 width와 height는 화면과 폭의 넓이를 픽셀 개수로 돌려준다.
    Dimension sizeOfWindow = aToolkit.getScreenSize();
    
    int x = sizeOfWindow.width / 4
    int y = sizeOfWindow.height / 4;
    theWidth = sizeOfWindow.width / 4;
    theHeight = sizeOfWindow.height / 6;
    aWindow.setBounds(x, y, theWidth, theHeight);
    aWindow.show();
  }
  public void paint(Graphics g)
  {
    g.drawString("Window.width : " + theWidth, 6060);
    g.drawString("Window.height : " + theHeight, 6080);
  }
}
class WindowHandler extends WindowAdapter
{
  public void widnowClosing(WindowEvent e)
  {
    System.exit(0);
  }
}


 → 실행 결과