public interface Painter<T>
ペイント委譲。 Painterインタフェースは、必ず1つのメソッドpaintを定義します。 これは、開発者がコンポーネントをサブクラス化することなくコンポーネントのペイント・ルーチンを変更できる場合に使用します。 また、一般的に、あらゆる形式のペイント委譲にも使用できます。
PainterはJava2Dコードの単なるカプセル化であり、既存のPainterの再使用や結合を非常に容易にします。 このインタフェースの実装は記述も容易なため、必要な処理を行うPainterが見つからない場合に最小限の労力で記述できます。 Painterの記述にはJava2Dの知識が必要です。
Painterは型パラメータで作成できます。 この型はpaintメソッド内にあることが要求されます。 たとえば、Componentのサブクラスでのみ機能するPainterを記述するとします。 その場合、Painterを宣言するときに、それがComponentを必要とするように宣言することで、ペイント・メソッドを型保証にできます。 例:
Painter<Component> p = new Painter<Component>() {
public void paint(Graphics2D g, Component c, int width, int height) {
g.setColor(c.getBackground());
//and so forth
}
}
このインタフェースではスレッドの安全性は保証されません。
| 修飾子と型 | メソッド | 説明 |
|---|---|---|
void |
paint(Graphics2D g, T object, int width, int height) |
指定された
Graphics2Dオブジェクトに描画します。 |
void paint(Graphics2D g, T object, int width, int height)
指定されたGraphics2Dオブジェクトに描画します。 このメソッドの実装は、Graphics2Dの状態を変更できますが、完了時にその状態を復元する必要はありません。 多くの場合、呼出し側は、スクラッチのグラフィックス・オブジェクトを渡すことをお勧めします。 Graphics2Dにはnullを指定できません。
グラフィックス・オブジェクトの状態はpaintメソッドによって受け付けられますが、受け付けられないこともあります。 たとえば、グラフィックスにアンチエイリアスの描画ヒントを設定しても、Painterの実装によって遵守される場合とされない場合があります。
指定されたオブジェクト・パラメータはオプションの構成引数として動作します。 たとえば、Component型を指定できます。 それを予測していたPainterはそのComponentから状態を読み取り、状態をペイントに使うことができます。 たとえば、実装はbackgroundColorを読み取り、それを使います。
一般に、再利用性を高めるため、ほとんどの標準Painterはこのパラメータを無視します。 これにより、あらゆるコンテキストでそれらを使用できます。 objectはnullの場合もあります。 オブジェクト・パラメータがnullの場合、実装はNullPointerExceptionをスローしてはいけません。
最後に、widthおよびheight引数は、Painterがペイントすべき幅と高さを指定します。 具体的には、指定した幅と高さで、ペインタにこの幅と高さいっぱいにペイントするように指示します。 gパラメータにクリップが指定されている場合は、さらに領域が制限されます。
たとえば、グラデーションを描画するPainter実装があるとします。 グラデーションは白から黒に変化します。 ペイント領域いっぱいに「引き伸ばされ」ます。 そのため、このPainterを使用して、500 x 500領域をペイントした場合、左端が黒になり、右端が白になって、その間にスムーズなグラデーションが描画されます。 その後、変更せずに、Painterを再利用して、20x20のサイズの領域をペイントできます。 この領域も左側が黒、右側が白になり、その間にスムーズなグラデーションがペイントされます。
g - 描画対象のGraphics2D。 nullは指定できません。 object - オプションの構成パラメータ。 nullも指定できます。 width - ペイントする領域の幅。height - ペイントする領域の高さ。 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。