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, 2013, Oracle and/or its affiliates. All rights reserved.