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も参照してください。