Java で円を描く
この記事では、GUI コンポーネントを作成するためのライブラリ java.awt
と javax.swing
を使って、Java で円を描く方法を紹介します。画面上に描きたいグラフィカルコンポーネントをよりコントロールできる Graphics2d
クラスのいくつかの関数を使用することになります。
Java の drawOval()
関数を使って円を描く
最初の例では、Graphics2D
クラスのメソッド drawOval()
を用いて楕円形を作成するが、完全な円を作成します。円を描くには、まず、Graphics
クラスを使ってコンポーネントを描画する関数 paint(Graphics g)
をオーバーライドします。
そのメソッドとプロパティを使用するために、Graphics
を Graphics2D
型にキャストします。ここで drawOval()
関数を呼び出して 4つの引数を渡します。最初の 2つの引数は円の x と y の座標であり、最後の 2つの引数は描画する円の幅と高さを指定します。
最後に、javax.swing
パッケージの JFrame
を拡張して、指定したサイズとプロパティを持つウィンドウフレームを作成します。
import java.awt.*;
import javax.swing.*;
public class DrawCircle extends JFrame {
public DrawCircle() {
setTitle("Drawing a Circle");
setSize(400, 400);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
@Override
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
g2d.drawOval(150, 150, 100, 100);
}
public static void main(String[] args) {
new DrawCircle();
}
}
出力:
Java で drawRoundRect()
関数を使って円を描く
また、drawRoundRect()
という Graphics2D
クラスの別のメソッドも円を描くのに用いることができます。その名が示すように、これは丸みを帯びた矩形を描画します。最初の例と同様に、paint(Graphics g)
関数をオーバーライドしてから Graphics2D
クラスの drawRoundRect()
メソッドを呼び出す。
drawRoundRect()
は 6つの引数を受け付ける。最初の 2つは x と y の座標、次の 2つは幅と高さ、最後の 2つは円弧の幅と高さです。
import java.awt.*;
import javax.swing.*;
public class DrawCircle extends JFrame {
public DrawCircle() {
setTitle("Drawing a Circle");
setSize(250, 250);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
@Override
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
g2d.drawRoundRect(40, 50, 90, 90, 200, 200);
}
public static void main(String[] args) {
new DrawCircle();
}
}
出力:
Java で Shape
と draw()
を使って円を描く
draw()
は graphics2D
クラスの別の関数で、Shape
を引数にとります。Shape は幾何学的な形状の特性を提供するインターフェースです。楕円の高さと幅を定義する Ellipse2D.Double()
を使用することにします。
下の例では、Ellipse2D.Double()
に引数を渡し、draw()
メソッドに Shape
オブジェクトを渡しています。このメソッドは最終的に JFrame
で作成したウィンドウに円を描画します。
import java.awt.*;
import java.awt.geom.Ellipse2D;
import javax.swing.*;
public class DrawCircle extends JFrame {
public DrawCircle() {
setTitle("Drawing a Circle");
setSize(250, 250);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
@Override
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
Shape circleShape = new Ellipse2D.Double(100, 100, 100, 100);
g2d.draw(circleShape);
}
public static void main(String[] args) {
new DrawCircle();
}
}
出力:
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