このセクションでは、モーダリティの使用に関連する問題について説明します。
Java SE 6リリースでは、AWTモーダリティの領域で多くの問題が解決され、多くの改善が実装されました。Java SE 1.5以前のリリースでモーダリティの問題が発生している場合は、まず最新のJava SEリリースにアップグレードし、問題がすでに修正されているか確認してください。
Java SE 6で修正された問題のいくつかを次に示します。
モーダル・ダイアログがブロックされたフレームの背後に移動します。
同じウィンドウを親に持つ2つのモーダル・ダイアログが同時に開いていました。
この項では、次の問題について説明します。
UNIXのウィンドウ・マネージャ:
一部のOracle SolarisまたはLinux環境(共通デスクトップ環境(CDE)のウィンドウ・マネージャを使用する場合など)では、モーダリティの改善点の多くは使用できません。Java SE 6以降のリリースで、あるモーダリティ・タイプやモーダル除外タイプが特定の構成でサポートされているかどうかを確認するには、次のメソッドを使用します。
Toolkit.isModalityTypeSupported()
Toolkit.isModalExclusionTypeSupported()
モーダル・ダイアログが画面に表示されると、ウィンドウ・マネージャは同じアプリケーション内の一部のJavaトップレベル・ウィンドウがタスクバーに表示されないようにすることがあります。これはエンド・ユーザーを困惑させることがありますが、非表示になっているウィンドウはすべてモーダル・ブロックされていて操作できないため、ユーザーの作業に大きな影響はありません。
アプレット:
アプリケーションをブラウザ内のアプレットとして実行してモーダル・ダイアログを表示した場合、ブラウザのウィンドウがブロックされる可能性があります。このブロック処理の実装は、ブラウザやオペレーティング・システムごとに異なります。たとえば、WindowsではInternet ExplorerとMozilla Firefoxはどちらも正しく動作しますが、Oracle SolarisやLinuxオペレーティング・システムではMozilla Firefoxのウィンドウはブロックされません。これは将来のリリースで修正される予定です。
その他のモダリティの問題:
モダリティ関連の機能とその使用方法の詳細は、AWTのモダリティの仕様を参照してください。
その仕様のセクションの1つでは、モーダル・ダイアログに関係したりその影響を受けたりする可能性のあるAWT機能(常時最前面プロパティ、フォーカス処理、ウィンドウ状態など)をいくつか説明しています。そのような場合のアプリケーションの動作は通常、未定義となるかプラットフォームに依存するので、特定の動作をあてにしないでください。