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.