モジュール java.desktop
パッケージ java.awt

クラスRectangle

java.lang.Object
すべての実装されたインタフェース:
Shape, Serializable, Cloneable
直系の既知のサブクラス:
DefaultCaret

public class Rectangle extends Rectangle2D implements Shape, Serializable
Rectangleは、座標空間内のRectangleオブジェクトの左上の点(x,y)、その幅、およびその高さで囲まれた座標空間内の領域を指定します。

Rectangleオブジェクトのwidthおよびheightpublicフィールドです。 Rectangleを作成するコンストラクタ、およびRectangleを変更できるメソッドには、widthやheightの値として負の値を設定できます。

幅または高さが正確にゼロのRectangleは、ディメンションがゼロの軸に沿ってロケーションを持ちますが、それ以外の場合、空とみなされます。 isEmpty()メソッドは、このようなRectangleに対してtrueを返します。 空のRectangleに点または矩形が含まれているか交差しているかをテストするメソッドは、いずれかのディメンションがゼロの場合、常にfalseを返します。 このようなRectangleを点または矩形と組み合せるメソッドには、add(Point)メソッドが呼び出されたかのように、その軸上のRectangleのロケーションが含まれます。

幅または高さが負のRectangleには、負のディメンションを持つ軸に沿ってロケーションもディメンションもありません。このようなRectangleは、これらの軸に沿って存在しないものとして扱われます。このようなRectangleは、包含計算およびポイントまたは矩形が含まれているか交差しているかをテストするメソッドに関しても、常にfalseを返します。このようなRectangleを点または矩形と組み合せるメソッドは、結果を生成する際にRectangleを完全に無視します。2つのRectangleオブジェクトを結合し、それぞれに負のディメンションがある場合、結果には少なくとも1つの負のディメンションが含まれます。

Rectangleの位置のみに影響するメソッドは、その寸法がどちらかの軸に沿って負または0であるかどうかに関係なく、Rectangleの位置で機能します。

デフォルトの引数をとらないコンストラクタで構築されたRectangleは、寸法が0x0であり、そのため空になります。 このRectangleの位置は(0,0)になり、この位置は結合操作および追加操作で使用されます。 そのため、点のセットの境界を累積しようとするコードでは、最初に負の幅と高さを使用してRectangleを構築するか、セットの最初の点を使用してRectangleを構築する必要があります。 たとえば:


     Rectangle bounds = new Rectangle(0, 0, -1, -1);
     for (int i = 0; i < points.length; i++) {
         bounds.add(points[i]);
     }
 
点の配列に少なくとも1つの点が含まれることがわかっている場合は、次のようになります。

     Rectangle bounds = new Rectangle(points[0]);
     for (int i = 1; i < points.length; i++) {
         bounds.add(points[i]);
     }
 

このクラスは32ビット整数を使用して、位置および寸法を格納します。 操作によっては、結果が32ビット整数の範囲を超えることもあります。 メソッドは結果を計算する際に、中間結果で32ビット・オーバーフローが発生しないような方法を使用し、位置および寸法を保持する32ビット・フィールドに最終結果を格納するための最適表現を選択します。 結果の位置は、実際の結果を直近の32ビット値にクリッピングして、xおよびyフィールドに格納されます。 widthおよびheight寸法フィールドに格納される値には、実際の結果を最大限に含むような32ビット値が選択されます。 一般に、寸法は32ビット整数の範囲とは無関係にクリッピングされます。ただし、位置を32ビット・フィールドのペアに格納できるように位置を移動した場合は、位置の「最適表現」に合わせて寸法が調整されます。 真の結果が負のディメンションであったため、一方または両方の軸に沿って存在しなかった場合、格納されたディメンションは、それらの軸内で負の数になります。 実際の結果の位置が、32ビット整数の範囲内で表現可能だが、一方または両方の軸で寸法が0である場合、格納される寸法はそれらの軸で0になります。

導入されたバージョン:
1.0
関連項目: