Java
 Computer >> コンピューター >  >> プログラミング >> Java

【Java】Graphicsオブジェクトで角丸の長方形を描画する方法を解説

JavaでGUIアプリケーションに図形を描画したい場合、Graphicsオブジェクトを使うのが基本となります。この記事では、Graphicsオブジェクトの基礎知識と、drawRoundRect()メソッドを使って角丸の長方形(ラウンドレクト)を描画する具体的な手順を、サンプルコード付きで解説します。

Graphicsクラスとは

  • Javaにおける描画処理は、java.awt.GraphicsクラスのインスタンスであるGraphicsオブジェクトを通じて行われます。
  • 各Graphicsオブジェクトは独自の座標系を持ち、文字列・線・矩形・円・多角形など、さまざまな図形を描画するためのメソッドを備えています。
  • Graphicsオブジェクトには、コンポーネントのpaint(Graphics g)メソッドをオーバーライドすることでアクセスできます。
  • 角丸の長方形を描画するには、X座標・Y座標・幅・高さ・arcWidth(角の横幅)・arcHeight(角の高さ)の6つの引数を受け取るdrawRoundRect()メソッドを使用します。

drawRoundRect()メソッドの引数

  • x / y: 長方形の左上隅の座標
  • width / height: 長方形の幅と高さ
  • arcWidth: 四隅の角の丸みの水平方向の直径
  • arcHeight: 四隅の角の丸みの垂直方向の直径

なお、塗りつぶしのある角丸の長方形を描きたい場合は、同じ引数を持つfillRoundRect()メソッドを使用します。

サンプルコード

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

public class RoundedRectangleTest extends JFrame {
   public RoundedRectangleTest() {
      setTitle("RoundedRectangle Test");
      setSize(350, 275);
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      setLocationRelativeTo(null);
      setVisible(true);
   }

   public void paint(Graphics g) {
      Graphics2D g2d = (Graphics2D) g;
      g2d.drawRoundRect(10, 50, 150, 150, 50, 30); // 角丸の長方形を描画する
   }

   public static void main(String[] args) {
      new RoundedRectangleTest();
   }
}

コードのポイント

  • paint()メソッド内で受け取ったGraphicsオブジェクトをGraphics2Dにキャストすると、より高度な描画機能が利用できます。
  • g2d.drawRoundRect(10, 50, 150, 150, 50, 30)により、位置(10, 50)に幅150×高さ150の角丸の長方形が描画されます。最後の2つの引数(50, 30)が角の丸みの大きさを決定します。

実行結果

【Java】Graphicsオブジェクトで角丸の長方形を描画する方法を解説

このように、GraphicsオブジェクトのdrawRoundRect()メソッドを使えば、数行のコードで簡単に角丸の長方形を描画できます。arcWidthとarcHeightの値を調整することで、角の丸みを自由にコントロールできるので、ぜひいろいろな値を試してみてください。

  1. Javaで角丸のJTextFieldを実装する方法を解説

    はじめにJTextFieldはJTextComponentクラスのサブクラスであり、ユーザーが1行形式でテキスト値を入力できる、Swingの中でも最も重要なコンポーネントの一つです。JTextFieldクラスは、テキストフィールド内に入力を行おうとするとActionListenerインターフェースを生成します。主なメソッドには、setText()、getText()、setEnabled()などがあります。デフォルトでは、JTextFieldは四角形の形状を持っていますが、RoundRectangle2Dクラスを使用し、paintComponent()メソッドをオーバーライドすることで、角丸形

  2. JavaのBorderFactoryを使ってさまざまなボーダー(境界線)を実装する方法

    BorderFactoryは、Javaでさまざまな種類のボーダー(境界線)を生成するためのファクトリクラスです。このクラスを利用することで、Swingコンポーネントの外枠を簡単かつ柔軟にカスタマイズできます。ボーダーの種類BevelBorder:浮き上がった(RAISED)または沈み込んだ(LOWERED)斜めのエッジを描画します。ボタンなどに立体感を持たせたい場合に有効です。EmptyBorder:何も描画しませんが、余白としてスペースを確保します。コンポーネント間の間隔調整に役立ちます。EtchedBorder:LOWERED(沈み込み)タイプはくぼんだ矩形のような外観になり、RAISED