Oracle Help for Java開発者ガイド | ![]() 目次 |
![]() 前へ |
![]() 次へ |
モーダル・ウィンドウに対して状況依存ヘルプを表示する場合、Javaによるモーダル・ウィンドウの処理の特性により問題が発生します。 (モーダル・ウィンドウは、そこから移動できないウィンドウです。 非モーダル・ウィンドウは、他のウィンドウに移動できます。)
OHJでは、この問題の回避方法が提供されています。次の各項で説明します。
非モーダル・ウィンドウからヘルプを要求した場合、ヘルプ・ウィンドウと、ヘルプを要求したウィンドウを切り替えることができます(通常の動作)。しかしモーダル・ウィンドウからヘルプを要求した場合、これは不可能です。Javaでは、モーダル・ウィンドウから、Java Virtual Machineで作成された他のウィンドウにはアクセスできません(他のモーダル・ウィンドウへのアクセスは可能です)。そのため、モーダル・ウィンドウからヘルプを要求する場合、OHJではモーダルのヘルプ・ウィンドウでヘルプを表示する必要があります。OHJそのものがモーダル・ウィンドウであるため、アプリケーションに戻るとき、ユーザーはヘルプ・ウィンドウを閉じる必要があります。
ヘルプが要求されると、OHJはアクティブ・ウィンドウがモーダルであるかどうかを判断します。アクティブ・ウィンドウがモーダルである場合、OHJは通常のトピック・ウィンドウの親子関係を変更し、ナビゲータ・ウィンドウを新規のモーダル・ウィンドウにします。この新規ウィンドウは、画面の前面に表示されるため、ユーザーはこのウィンドウを操作できます。実際には、このウィンドウを操作するのは、ヘルプ・ウィンドウ(モーダル)を閉じるときのみです。Javaにおけるモダリティの実装は不十分なため、これがOHJでサポートされているすべてのJava Virtual Machineで有効な唯一の解決方法です。
OHJでの回避方法が機能するためには、OHJによって現在アクティブなウィンドウが追跡できるようにする必要があります。
registerClientWindow()
メソッドを使用して、作成するすべてのウィンドウ(Frame
またはDialog
)をHelp
オブジェクトに登録します。
registerClientWindow() メソッド |
---|
|
詳細は、 APIのドキュメントのHelp.registerClientWindow()
を参照してください。
Help.registerClientWindow()
を使用してWindow
オブジェクトを登録した場合、登録解除もする必要があります。ウィンドウがアクティブでないことがわかっている場合、unregisterClientWindow()
メソッドを使用して、そのウィンドウをHelp
オブジェクトから登録解除する必要があります。Window
インスタンスを登録解除しないと、そのウィンドウはガベージ・コレクションの対象にならないので注意してください。
unregisterClientWindow() メソッド |
---|
|
詳細は、 APIのドキュメントのHelp.unregisterClientWindow()
を参照してください。
Copyright © 1996, 2004, Oracle. All rights reserved.