Java

テキスト

Swing のその他の変更

デフォルトの HTML フォント - Serif

これまで、HTML テキスト (ラベル、ボタンなどに使用される HTML テキストを含む) のデフォルトフォントは、SansSerif でした。バージョン 1.3 から、デフォルトフォントが Serif になりました。

HTMLEditorKit insertAtBoundry => insertAtBoundary

HTMLEditorKit.InsertHTMLTextAction 内のメソッド insertAtBoundry のスペルが間違っていました。これは推奨されなくなり、insertAtBoundary が追加されました。

DocumentEvent の自動処理

DocumentEvent を管理するデフォルト機能は、CompositeView から移動され、また package private から public に変更になりました。DocumentEvent の管理が複数の protected メソッドに分散されたため、サブクラス化がより容易になりました。

この動作を実現するため、子のビューを管理するメソッドも CompositeView から View に移動する必要が生じました。

次のメソッドが、javax.swing.text.View に追加されました。

BoxView - axis プロパティ、layoutChanged メソッドの追加

BoxView は、それまでサブクラスが取得できなかった axis 引数を保持します。国際化上の考慮事項に基づいて axis を設定するサブクラスは、これをプロパティとして必要とします。場合によっては (テーブルなど) 子の設定に関係なくレイアウトが無効になることがあるので、ボックスのレイアウトについても、要求されたサイズとは別個に処理する必要があります。

次のメソッドが javax.swing.text.BoxView に追加されています。

FlowView を拡張するようになった ParagraphView

View プロトコルは構築フローをサポートしますが、それまでの実装は比較的単純な段落フローを作成する ParagraphView だけでした。決定フロー、改ページなどを実行するために、本質上機能を一般化できます。 機能を一般化すると、代替フローをずっと容易に作成できるようになります。

FlowView と呼ばれる新規クラスは、論理構造を物理構造に変換するという方法を取ります。この方法は、FlowStrategy と呼ばれる入れ子にされたクラスにより定義されます。ParagraphView は 段落固有の動作 (行間隔、先頭行のインデント、行揃えなど) を追加する FlowView を拡張します。この変更により、次のメソッドが javax.swing.text.View クラスに追加されました。

FormView の地域対応化と、非推奨になった SUBMIT、RESET

javax.swing.text.html.FormView クラスは、これまで地域対応ではありませんでした。2 つの public static final String として SUBMIT および RESET がありますが、これらは HTML ドキュメント内の <form> 要素用のテキスト判定に使用されます。これらは public static final であるため、地域対応にはできません。SUBMIT および RESET は推奨されなくなり、値は UIManager のプロパティである FormView.submitButtonText および FormView.resetButtonText から取得されるようになりました。

直列化

ここでは、swing.text パッケージ内での直列化関連の変更点の概要を示します。

html パッケージ - AbstractWriter の公開

AbstractWriter は、テキストドキュメントからカスタム記述を提供しようとする開発者向けの基底クラスとして使用されます。たとえば、HTMLWriter は AbstractWriter を拡張し、かつ HTML を出力するために html パッケージ内で使用されます。AbstractWriter の問題点は、それが提供する大半のメソッドおよびインスタンス変数が private であったということです。それらを使用可能にするには、サブクラスが数多くのメソッドおよびインスタンス変数をコピーする必要があります。HTMLWriter は AbstractWriter を拡張しますが、最終的にはすべてのインスタンス変数をコピーし、ほとんどすべてのメソッドをオーバーライドします。以下の変更により、AbstractWriter の API がオープンになり、より広く活用することが可能になりました。このため、HTMLWriter はかなり単純になり、AbstractWriter から多くをコピーする必要はなくなりました。

以下を参照してください。

html パッケージ - CSS1 サポートの公開

html パッケージは CSS 1 をサポートします。CSS の機能の 1 つとして、その名前が示すように階層式スタイルシートのサポートがあります。これを利用すると、複数のスタイルシートを同時に使って表示を変更することができます。たとえば、通常ブラウザはデフォルトスタイルを定義するスタイルシートを保持します。 特定のページもスタイルシートを保持することができ、それはブラウザが提供するスタイルシートをオーバーライドします。次のメソッドは、この機能を開発者に対して公開し、複数のスタイルシートのリンクを可能にします。

HTML 挿入の簡素化

これまで、開発者が既存の HTML ドキュメントに任意の HTML を挿入することは、あまり容易な作業ではありませんでした。挿入を実行するためには、開発者は Swing の text パッケージと html パッケージに関する詳細な知識が必要でした。多くの開発者たちは、Dynamic html を使用していました。 これにより、既存のページへの HTML の挿入を簡単にするためのメソッドがいくつか提供されます。こうしたユーザの利便性を向上させるために、Dynamic html が提供するメソッドを綿密にミラー化するメソッドが公開されました。

さらに、HTMLEditorKit.ParserCallback クラスに追加された定数を次に示します。

text パッケージの ZoneView 新規クラス

問題 -
Swing の text パッケージは、View オブジェクトを使ってレイアウトおよびレンダリングを目的としたドキュメントモデルの表示を行います。モデルが大きい場合、表示できるのはそのうちの少数であるにもかかわらず、作成される View オブジェクトの数は多くなります。実際にオブジェクトを表示する必要が生じるまでその作成を遅らせる場合に View 実装が必要になります。これは、推測される View オブジェクトのサイズで領域を構築しておき、必要時に実際の View オブジェクトで置き換えることにより実現されます。これにより、大きなドキュメントに使用されるメモリ量を実質的に減らすことができます。

解決法 -
ZoneView という次のクラスがサポートする領域は、実際に表示または編集が行われるまで大量のメモリを消費しません。国際化対応の BIDI をサポートするためにより重量となる WrappedPlainView は、そのスーパークラスを BoxView から ZoneView (BoxView である) に変更することにより、このクラスから大きな恩恵を受けることができます。

以下を参照してください。

text パッケージの AsyncBoxView 新規クラス

問題 -
Swing の text パッケージは、View オブジェクトを使ってレイアウトおよびレンダリング処理用のドキュメントモデルの表示を行います。他のほとんどの場合と同様、レイアウトは、イベント処理用スレッドで行われます。レイアウトは、非常に多くの CPU 時間を占有してしまうことがあります。 この場合、レイアウトの実行中にユーザインタフェースのフリーズが引き起こされます。text パッケージは、平行処理をある程度サポートしますが、さらにレイアウトが GUI イベント処理スレッドとは非同期に実行されるように拡張する必要があります。View 実装は、レイアウトを非同期に実行する上で必要です。

解決法 -
この必要性に応えるため、次のクラスが text パッケージに追加されました。詳細は、「Swing Connection」を参照してください。

text の View クラスに追加された getGraphics メソッド

描画に使用する Graphics オブジェクトを取得するメソッドが、javax.swing.text.View クラスに含まれています。

以下を参照してください。


Copyright © 1999 Sun Microsystems, Inc. All Rights Reserved.

コメントの送付先:swing-feedback@java.sun.com。 これは購読リストではありません。
Sun
Java ソフトウェア