Java で三角形を描く

Rupam Yadav 2023年10月12日
  1. Java で三角形を描くには java.awtjavax.swingPath2D と一緒に使用する
  2. Java で三角形を描くには java.awtjavax.swingdrawPolygon を使用する
  3. Java で drawLine() を使って三角形を描く
Java で三角形を描く

この記事では、Java で三角形を描く方法を学びます。グラフィカルなプログラミングアプリケーションのための Java 開発パッケージの中で最も古いものである AWT (Abstract Window Component Toolkit) を使用します。Swing は、AWT をベースに新しく開発された Java 用 GUI ウィジェットキットで、より多くの機能を備えています。

Java で三角形を描くには java.awtjavax.swingPath2D と一緒に使用する

ボタンやテキストフィールドなどのコンポーネントを追加して GUI(Graphical User Interface)を作成するためのメインウィンドウを作成するには、main クラスの JFrame を使用します。クラス Draw_A_TriangleJPanel を継承しています。JPanelframe.add() メソッドを使って JFrames に追加します。

Triangle_Shape クラスは Path2D クラスを拡張したもので、任意の幾何学的なパスを表現するシンプルで柔軟な形状を提供します。最初の点は moveTo() メソッドを用いて配置し、追加の点は LineTo() メソッドを用いて配置します。close() メソッドは三角形が適切に閉じられていることを確認します。

paintComponent() メソッドは、パネルが作成されたときやユーザがユーザインタフェースで再描画を必要とする操作を行ったときに自動的に呼び出されています。Graphics2D は色管理、ジオメトリ、テキストレイアウトをより制御することができます。最後に、g2d を使って draw を呼び出して三角形を描きます。

import java.awt.*;
import java.awt.geom.Path2D;
import java.awt.geom.Point2D;
import javax.swing.*;

public class Draw_A_Triangle extends JPanel {
  public void paintComponent(Graphics g) {
    Triangle_Shape triangleShape = new Triangle_Shape(
        new Point2D.Double(50, 0), new Point2D.Double(100, 100), new Point2D.Double(0, 100));
    Graphics2D g2d = (Graphics2D) g.create();
    g2d.draw(triangleShape);
  }
  public static void main(String[] args) {
    JFrame.setDefaultLookAndFeelDecorated(true);
    JFrame frame = new JFrame("Draw Triangle");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setBackground(Color.white);
    frame.setSize(200, 200);

    Draw_A_Triangle panel = new Draw_A_Triangle();
    frame.add(panel);
    frame.setVisible(true);
  }
}
class Triangle_Shape extends Path2D.Double {
  public Triangle_Shape(Point2D... points) {
    moveTo(points[0].getX(), points[0].getY());
    lineTo(points[1].getX(), points[1].getY());
    lineTo(points[2].getX(), points[2].getY());
    closePath();
  }
}

出力:

Java で三角形を描く - moveTo

Java で三角形を描くには java.awtjavax.swingdrawPolygon を使用する

JFrame を使ってトップレベルのコンテナを作成し、そこに JPanel を継承した DrawATriangle クラスであるパネルを追加します。

下のコードに示すように、paintComponent の中の drawPolygon メソッドを呼び出して Graphics オブジェクト g に三角形を作成します。

drawPolygon(int x[], int y[], int numOfPoints) メソッドは、x[] 配列と y[] 配列で指定された座標に従ってアウトラインポリゴンを描画します。numOfPoints は三角形の場合は 3 点を指定します。

import java.awt.*;
import javax.swing.*;

public class DrawATriangle extends JPanel {
  public void paintComponent(Graphics g) {
    int[] x = {50, 100, 0};
    int[] y = {0, 100, 100};
    g.drawPolygon(x, y, 3);
  }

  public static void main(String[] args) {
    JFrame.setDefaultLookAndFeelDecorated(true);
    JFrame frame = new JFrame("Draw a Polygon");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setBackground(Color.white);
    frame.setSize(300, 200);

    DrawATriangle panel = new DrawATriangle();
    frame.add(panel);
    frame.setVisible(true);
  }
}

出力:

Java で三角形を描く - drawPolygon

Java で drawLine() を使って三角形を描く

DrawTriangle クラスでは、JComponent を拡張して paintCompnent()JFrame のような Swing コンポーネントを使用するようにしています。パラメータ gGraphics をオーバーライドし、これを使っていくつかの描画関数を呼び出すことができます。

線を描画するために drawLine() メソッドを呼び出す。3 本の線で構成される三角形を作成したいので、drawLine() を 3 回呼び出す必要があります。drawLine() は 4つの引数をとり、線の 1 点目と 2 点目の x と y の座標を指定します。

戻り値の型は Dimension であり、ウィンドウの寸法を指定するために getPreferredSize() メソッドを呼び出す。最後に、三角形を表示するために、main メソッドで JFrame オブジェクトを作成し、そこに DrawTriangle クラスのオブジェクトを追加します。初期状態ではフレームは見えないので、jFrame.setVisible(true) を呼び出す必要があることに注意してください。

import java.awt.*;
import javax.swing.*;

public class DrawTriangle extends JComponent {
  @Override
  protected void paintComponent(Graphics g) {
    super.paintComponent(g);

    g.drawLine(120, 130, 280, 130);
    g.drawLine(120, 130, 200, 65);
    g.drawLine(200, 65, 280, 130);
  }

  public Dimension getPreferredSize() {
    return new Dimension(500, 300);
  }

  public static void main(String[] args) {
    JFrame jFrame = new JFrame();
    jFrame.add(new DrawTriangle());
    jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    jFrame.pack();
    jFrame.setVisible(true);
  }
}

出力:

Java で三角形を描く - drawline

著者: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

関連記事 - Java GUI