Polygonクラス

広告

Polygonクラスは多角形を表すクラスです。

クラス図は次のようになっています。

  • java.lang.Object
  • java.awt.Polygon
  • public class Polygon extends Object implements Shape, Serializable

コンストラクタは次の2つが用意されています。

コンストラクタ
Polygon()
空の多角形を作成します。
Polygon(int[] xpoints, int[] ypoints, int npoints)
指定されたパラメータから Polygon を構築および初期化します。

基本となる2番目のコンストラクタを確認してみます。

指定されたパラメータから Polygon を構築および初期化します。

パラメータ:
  xpoints - X 座標の配列
  ypoints - Y 座標の配列
  npoints - Polygon の点の 総数 
例外: 
  NegativeArraySizeException - npoints の値が 負の場合 
  IndexOutOfBoundsException - npoints が xpoints の長さまたは ypoints
    の長さより大きい場合 
  NullPointerException - xpoints または ypoints が null の場合

1番目の引数には多角形の頂点のx座標の配列をint型の配列として指定します。2番目の引数には多角形の頂点のy座標の配列をint型の配列として指定します。多角形の頂点の数だけの配列となります。

3番目の引数には多角形の頂点の数をint型の値で指定します。

具体的には次のように記述します。

int[] xpoints = {30, 150, 170, 120, 30};
int[] ypoints = {20, 40, 140, 110, 80};
int npoints = xpoints.length;
Polygon polygon = new Polygon(xpoints, ypoints, npoints);

サンプルプログラム

簡単なサンプルを一度試してみます。

PolygonTest1.java

import javax.swing.*;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.geom.*;
import java.awt.Polygon;

public class PolygonTest1 extends JPanel{
  public static void main(String[] args){
    JFrame frame = new JFrame();

    PolygonTest1 app = new PolygonTest1();
    frame.getContentPane().add(app);

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setBounds(10, 10, 300, 200);
    frame.setTitle("タイトル");
    frame.setVisible(true);
  }

  public void paintComponent(Graphics g){
    Graphics2D g2 = (Graphics2D)g;

    g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, 
                        RenderingHints.VALUE_ANTIALIAS_ON);

    int[] xpoints = {30, 150, 170, 80, 30};
    int[] ypoints = {20, 40, 120, 140, 80};
    int npoints = xpoints.length;
    Polygon polygon = new Polygon(xpoints, ypoints, npoints);

    g2.draw(polygon);
  }
}

上記をコンパイルした後で実行すると次のように表示されます。

多角形を表示する

( Written by Tatsuo Ikura )