|
JavaTM Platform Standard Ed. 6 |
|||||||||
前のパッケージ 次のパッケージ | フレームあり フレームなし |
参照先:
説明
インタフェースの概要 | |
---|---|
Attribute | Attribute インタフェースは、クラスが印刷属性を表すことを示すために、任意およびすべての印刷属性クラスによって実装される基本インタフェースです。 |
AttributeSet | AttributeSet インタフェースは、印刷属性セットのインタフェースを指定します。 |
DocAttribute | DocAttribute インタフェースは、属性がドキュメントの設定を表示することを示すために、印刷属性クラスが実装するタグ機能インタフェースです。 |
DocAttributeSet | DocAttributeSet インタフェースは、ドキュメントの属性のセット、つまり DocAttribute インタフェースを実装する印刷属性に対するインタフェースを指定します。 |
PrintJobAttribute | PrintJobAttribute は、属性が Print Job の状態または Print Job のその他の特性を記述することを示すために、印刷属性クラスが実装するタグ機能インタフェースです。 |
PrintJobAttributeSet | PrintJobAttributeSet インタフェースは、印刷ジョブ属性のセットに対するインタフェース、つまり、PrintJobAttribute インタフェースを実装する印刷属性を指定します。 |
PrintRequestAttribute | PrintRequestAttribute インタフェースは、属性が必要な印刷ジョブの設定を表示することを示すために、印刷属性クラスが実装するタグ機能インタフェースです。 |
PrintRequestAttributeSet | PrintRequestAttributeSet インタフェースは、印刷要求属性のセットに対するインタフェース、つまり PrintRequestAttribute インタフェースを実装する印刷属性を指定します。 |
PrintServiceAttribute | PrintServiceAttribute インタフェースは、属性が Print Service の状態または Print Service のその他の特性を記述することを示すために、印刷属性クラスが実装するタグ機能インタフェースです。 |
PrintServiceAttributeSet | PrintServiceAttributeSet インタフェースは、印刷ジョブ属性のセットに対するインタフェース、つまり、PrintServiceAttribute インタフェースを実装する印刷属性を指定します。 |
SupportedValuesAttribute | SupportedValuesAttribute インタフェースは、属性がほかの属性でサポートされる値を記述することを示すために、印刷属性クラスが実装するタグ機能インタフェースです。 |
クラスの概要 | |
---|---|
AttributeSetUtilities | AttributeSetUtilities クラスは、AttributeSets を操作する次の静的メソッドを提供します。 |
DateTimeSyntax | DateTimeSyntax クラスは、日付と時刻を値とするすべての属性の一般的な実装を行う抽象基底クラスです。 |
EnumSyntax | EnumSyntax クラスは、すべての「型保証された列挙」オブジェクトの一般的な実装を提供する抽象基底クラスです。 |
HashAttributeSet | HashAttributeSet クラスは、ハッシュマップの特性を持つ AttributeSet 実装を提供します。 |
HashDocAttributeSet | HashDocAttributeSet クラスは、その実装を HashAttributeSet クラスから継承し、DocAttributeSet インタフェースの意味上の制限を適用する属性セットを提供します。 |
HashPrintJobAttributeSet | HashPrintJobAttributeSet クラスは、その実装を HashAttributeSet クラスから継承し、PrintJobAttributeSet インタフェースの意味上の制限を適用する属性セットを提供します。 |
HashPrintRequestAttributeSet | HashPrintRequestAttributeSet クラスは、その実装を HashAttributeSet クラスから継承し、PrintRequestAttributeSet インタフェースの意味上の制限を適用します。 |
HashPrintServiceAttributeSet | HashPrintServiceAttributeSet クラスは、その実装を HashAttributeSet クラスから継承し、PrintServiceAttributeSet インタフェースの意味上の制限を適用する属性セットを提供します。 |
IntegerSyntax | IntegerSyntax クラスは、整数値を持つすべての属性の一般的な実装を提供する抽象基底クラスです。 |
ResolutionSyntax | ResolutionSyntax クラスは、プリンタの解像度を示すすべての属性の一般的な実装を提供する抽象基底クラスです。 |
SetOfIntegerSyntax | SetOfIntegerSyntax クラスは、負以外の整数値を持つすべての属性の一般的な実装を提供する抽象基底クラスです。 |
Size2DSyntax | Size2DSyntax クラスは、2 次元のサイズを示すすべての属性の一般的な実装を提供する抽象基底クラスです。 |
TextSyntax | TextSyntax クラスは、値が文字列であるすべての属性の一般的な実装を提供する抽象基底クラスです。 |
URISyntax | URISyntax クラスは、値が URI (Uniform Resource Identifier) であるすべての属性の一般的な実装を提供する抽象基底クラスです。 |
例外の概要 | |
---|---|
UnmodifiableSetException | このセットが変更できないので要求されたオペレーションが実行できないことを示すためにスローされます。 |
JavaTM Print Service の属性の型とそれらが属性セットに収集される方法を記述するクラスとインスタンスを提供します。
印刷データと処理命令は別個のエンティティーです。これは次のことを意味します。
処理命令は、印刷ジョブが要求を処理する方法を指定しません。 各処理命令は、印刷ジョブの結果の説明だけを行います。印刷ジョブは、処理命令により指定された結果を実現する方法を確定します。処理命令の項目を説明的に表現することにより、印刷ジョブの実装により多くの柔軟性が得られます。
Java Print Service API では、属性カテゴリは、Attribute インタフェースを実装する Java クラスによって表されます。属性値は、このようなクラスまたはそのサブクラスの 1 つのインスタンスです。たとえば、印刷部数を指定するために、アプリケーションは希望する印刷部数を持つ Copies クラスのインスタンスを構築し、印刷要求の一部としてこの Copies
インスタンスを使用します。この場合、Copies
クラスは属性カテゴリを表し、Copies
インスタンスは属性値を表します。
プリンタが印刷ジョブの処理を開始すると、ジョブに関する追加情報が使用可能になります。 この情報には、「完了」または「待機」などジョブの状態とすでに印刷されたページ数が含まれます。このような情報も属性です。属性は、プリンタ名、プリンタの位置、および待機するジョブの数などプリンタ自体の情報も記述できます。
Java Print Service API は Attribute
の 5 つのサブインタフェースを持つ異なる種類の属性を定義します。次にそれらを説明します。
DocAttribute
として 1 つの印刷ジョブの 1 つのドキュメントに適用することも、PrintRequestAttribute
として印刷ジョブ全体に適用することもできます。低レベルの属性の中には、単独で使用されず、常に高レベルの属性に統合されるものもあります。これらの低レベルの属性クラスは、Attribute インタフェースだけを実装し、タグ機能サブインタフェースを実装することはありません。
Java Print Service API は、Internet Printing Protocol (IPP) バージョン 1.1 の属性にモデル化されている標準属性クラスのグループを定義します。標準属性クラスは、実際の属性クラスを保持するために、パッケージ javax.print.attribute に定義された汎用機能とは概念的に区別されるサブパッケージ javax.print.attribute.standard にあります。
AttributeSet
インタフェースは、Map インタフェースに類似しています。これは値に対するキーのマッピングを提供します。 ここでは、各キーは一意であり、複数の値を保持することはできません。ただし、AttributeSet
インタフェースは Java Print Service API のニーズをサポートするように設計されています。AttributeSet
には、次が必要になります。
AttributeSet
の各キーはカテゴリに対応し、キーの値はキーによって表されるカテゴリに属する属性値の 1 つだけをとることができる。このため、Map
と異なり、AttributeSet
はキーの使用可能な値を制限する。つまり、属性カテゴリはそのカテゴリに属さない属性値を設定できない
Attribute
インタフェースを実装する属性だけがセットに追加できる
javax.print.attribute パッケージには、属性セットのインタフェースの具象実装として HashAttributeSet が含まれます。HashAttributeSet
はハッシュマップに基づく属性セットを提供します。この実装を使用するか、または AttributeSet
インタフェースの独自の実装を提供することができます。
Java Print Service API は、「属性の役割」セクションで説明されているとおり、4 種類の属性の 1 つだけを保持するように制限されている属性セットの次の 4 つの特殊化を提供します。
ここでは 4 種類の属性セットだけがリストされていますが、5 種類の属性があることに注意してください。SupportedValuesAttribute インタフェースは、別の属性でサポートする値を提供する属性を表示します。サポートする値の属性は属性セットには統合されないため、これらを定義する属性セットのサブインタフェースはありません。
一部のコンテキストでは、属性セットは読み込み専用の場合がありますが、これはクライアントが属性セットの内容を検査することはできるが変更できないことを意味します。別のコンテキストでは、属性セットが読み込み、書き込み可能の場合がありますが、これはクライアントが属性セットの内容の検査と変更の両方を行うことができることを意味します。読み込み専用の属性セットの場合、変更操作を呼び出すと、UnmodifiableSetException
がスローされます。
javax.print.attribute パッケージには、次の各属性セットのサブインタフェースの具象実装の 1 つが含まれます。
Copies
クラス、Sides クラス、および PrinterResolution クラスなどのクラスとして定義します。各属性クラスは、属性の値を保持する 1 つ以上の基本データ項目をラップします。属性セットの操作は、属性を追加するとき、同じカテゴリ内に既存の属性を検出するとき、およびそのカテゴリに付与された属性を検索するときに、頻繁に属性カテゴリのオブジェクト間の比較を行います。属性カテゴリはクラスによって表されるので、属性値の速い比較は Class.equals
メソッドによって行えます。
Java Print Service API には多数の属性カテゴリが含まれますが、属性値の異なる型はほんの少ししかありません。ほとんどの属性は、整数値、整数型の範囲、テキスト、整数値の列挙など少数のデータ型によって表せます。カテゴリが受け入れる属性値の型は、属性の抽象構文と呼ばれます。一貫性を提供し、コードの重複を減らすために、Java Print Service API は抽象構文クラスを定義して各抽象構文を表し、可能な場合には、これらのクラスは標準属性の親としていつでも使用できます。抽象構文クラスは次のとおりです。
各属性クラスは、直接的または間接的に
すべての属性クラスは
新しい属性カテゴリを定義する場合、ベンダーは新しい属性クラスを定義します。この属性クラスは、標準属性クラスと同じように、
注:javax.print API では、メソッドへの null 参照パラメータ指定は、ドキュメントに意味が明記されている場合を除いては不正であることに注意してください。これに反する使用は無効なコーディングであり、すぐにまたはあとで実行時の例外が生ずる結果になります。IllegalArgumentException および NullPointerException は、このような場合の典型的で許容できる実行時の例外の事例です。
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。Attribute
インタフェースを実装し、それを印刷属性としてマークします。また、特定のコンテキストで、制限された属性セットに表示される属性クラスは、1 つ以上の Attribute
のサブインタフェースを実装します。また、ほとんどの属性クラスは、適切な抽象構文クラスを拡張して実装を取得します。Sides
属性クラスを次のように考えてください。
public class Sides
extends EnumSyntax
implements DocAttribute, PrintRequestAttribute, PrintJobAttribute
{
public final Object getCategory()
{
return Sides.class;
}
...
}
Attribute
を実装するので、すべての属性クラスは、属性カテゴリを返す getCategory
メソッドの実装を提供する必要があります。Sides
の場合、getCategory
メソッドは Sides.class
を返します。getCategory
メソッドは、最終的に標準属性クラスの任意のベンダー定義サブクラスが同じカテゴリに表示されるようにします。すべての属性オブジェクトはいったん構築されると不変であり、このため属性オブジェクトの参照を自由に渡すことができます。異なる属性値を取得するには、異なる属性オブジェクトを構築してください。
ベンダーの属性
Java Print Service API は、ベンダーが次を実行できるように設計されています。
属性の新しい値を定義する場合は、クライアントで任意の値を持つ属性のインスタンスを実行時に構築できます。ただし、EnumSyntax
の抽象構文クラスを使用する列挙属性は、コンパイル時に使用可能なすべての属性値を、属性クラスの単独インスタンスとして指定します。これは、新しい列挙値を実行時に構築できないことを意味します。標準列挙属性に対してべンダー固有の新しい値を定義する場合、ベンダーは新しい単独インスタンスを指定する新しい属性クラスを定義する必要があります。新しい属性値が標準属性値と同じカテゴリの中に入るようにするには、新しい属性クラスを標準属性クラスのサブクラスにしなければなりません。
Attribute
またはそのサブインタフェースの 1 つを実装し、抽象構文クラスを拡張します。ベンダーは既存の抽象構文クラスを使用することも、新しい抽象構文クラスを定義することもできます。ベンダーが定義した新しい属性は、AttributeSet
などのような Attribute
が使用されるところではどこでも使用できます。
属性の使用
一般的な印刷アプリケーションでは、印刷要求属性は通常クライアントが指定する属性型であるため、PrintRequestAttributeSet
を使用します。次の例は、印刷要求属性の属性セットを作成し、指定された属性によってドキュメントを印刷できるプリンタの検出を示しています。
FileInputStream psStream;
try {
psstream = new FileInputStream("file.ps");
} catch (FileNotFoundException ffne) {
}
if (psstream == null) {
return;
}
//Set the document type. See the DocFlavor documentation for
//more information.
DocFlavor psInFormat = DocFlavor.INPUT_STREAM.POSTSCRIPT;
Doc myDoc = new SimpleDoc(pstream, psInFormat, null);
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
aset.add(new Copies(5));
aset.add(MediaSize.A4);
aset.add(Sides.DUPLEX);
PrintService[] services =
PrintServiceLookup.lookupPrintServices(psInFormat, aset);
if (services.length > 0) {
DocPrintJob job = services[0].createPrintJob();
try {
job.print(myDoc, aset);
} catch (PrintException pe) {}
}
概要
パッケージ
クラス
使用
階層ツリー
非推奨 API
索引
ヘルプ
JavaTM Platform
Standard Ed. 6
前のパッケージ
次のパッケージ
フレームあり
フレームなし
バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。