Java で六角形を描く
 
この記事では、Java プログラミングで六角形を描く方法を説明します。画面に図形を描画するための配列とオブジェクトについて学習します。
Java で配列を使用して六角形を描画する
サンプルコード(hexagon.java):
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.JPanel;
public class hexagon extends JPanel {
  public hexagon() {
    setPreferredSize(new Dimension(500, 500));
  }
  @Override
  public void paintComponent(Graphics g) {
    super.paintComponent(g);
    int[] xPoints = {200, 300, 350, 300, 200, 150};
    int[] yPoints = {350, 350, 250, 150, 150, 250};
    g.fillPolygon(xPoints, yPoints, xPoints.length);
  }
}
サンプルコード(drawHexagon.java):
import javax.swing.JFrame;
public class drawHexagon {
  public static void main(String[] args) {
    JFrame frame = new JFrame("Draw Hexagon");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.add(new hexagon());
    frame.pack();
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);
  }
}
出力:

このコード例には、hexagon.java と drawHexagon.java の 2つのクラスがあり、これらには main 関数があります。hexagon.java は、paintComponent() という名前のメソッドをオーバーライドするため、JPanel クラスを拡張します。
java.swing パッケージクラスの 1つである JPanel は、さまざまなコンポーネントを格納するコンテナのようなものです。
その主なタスクは、さまざまなコンポーネントとレイアウトを整理することです。あなたはそれについての詳細な情報をここで見つけることができます。
さらに、setPreferredSize() メソッドを使用してコンストラクターを作成します。引数として width と height を持つ Dimension クラスのオブジェクトを取ります。
setBounds() または setSize() の代わりに setPreferredSize() を使用するのはなぜですか?setSize() と setBounds() は、使用されているレイアウトマネージャーがない場合にのみ使用できますが、デフォルトのレイアウトマネージャーがあります。
したがって、setXXXXSize() メソッドを介してレイアウトマネージャーにいくつかのヒントを提供できます。たとえば、setPreferredSize() です。
次に、画面上にグラフィックを作成する paintComponent() という名前のメソッドをオーバーライドします。super クラスの paintComponent() メソッドに渡す Graphics クラスからオブジェクトを取得します。
このオブジェクトを使用して、色の設定、形状の描画などを行うことができます。
その後、x 座標と y 座標を持つ 2つの配列 xPoints と yPoints を作成します。これらの座標と nPoints を fillPolygon() メソッドに渡して、画面上に六角形を作成します。
六角形の正確な点を見つけるために、グラフの最初の象限を使用して x 点と y 点を取得できます。以下を参照してください。

それでは、drawHexagon.java クラスについて話しましょう。add() メソッドを使用して六角形をフレームに追加する JFrame クラスオブジェクトを作成します。
setDefaultCloseOperation() は、ユーザーが画面上のクロスボタン(X)を押すとすぐに実行されます。setVisible(true) メソッドは、ウィンドウをユーザーに表示します。
setLocationRelativeTo(null) メソッドは、コンピューターの画面ウィンドウを中央に配置します。さらに、pack() は、指定されたサイズ以上のコンテンツを運ぶのに適したサイズのフレームを作成します。
Java でオブジェクトを使用して六角形を描画する
サンプルコード(hexagon.java):
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Polygon;
import javax.swing.JPanel;
public class hexagon extends JPanel {
  public hexagon() {
    setPreferredSize(new Dimension(250, 250));
  }
  @Override
  public void paintComponent(Graphics g) {
    super.paintComponent(g);
    Polygon p = new Polygon();
    for (int i = 0; i < 6; i++)
      p.addPoint((int) (100 + 50 * Math.cos(i * 2 * Math.PI / 6)),
          (int) (100 + 50 * Math.sin(i * 2 * Math.PI / 6)));
    g.setColor(Color.RED);
    g.fillPolygon(p);
  }
}
メインクラス:
import javax.swing.JFrame;
public class drawHexagon {
  public static void main(String[] args) {
    JFrame frame = new JFrame("Draw Hexagon");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.add(new hexagon());
    frame.pack();
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);
  }
}
出力:

hexagon.java クラスの paintComponent() のいくつかの変更を除いて、すべての機能は前のセクションと同じです。
今回は、addPoint() メソッドを使用してポイントを追加する Polygon クラスオブジェクトを作成します。setColor() および fillPolygon() メソッドを使用して、色を設定し、形状を塗りつぶします。
