Java SE 6.0 で導入された機能は次のとおりです。
この新しいモーダリティーモデルは、ダイアログボックスのモーダリティーブロックを処理するために導入されました。このモデルは次の 4 つのモーダリティータイプから構成されます: モードなし、アプリケーションモーダル、ドキュメントモーダル、およびツールキットモーダル。
public Dialog(Window owner, String title, Dialog.ModalityType modalityType,GraphicsConfiguration gc)
modalityTypes パラメータは、ダイアログボックスが表示された際にほかのウィンドウへの入力をブロックするかどうかを指定します。null 値やサポートされていないモーダリティータイプは、モードなしタイプと同等です。Dialog クラスの getModalityType メソッドと setModalityType メソッドを使用すると、それぞれダイアログボックスのモーダリティータイプを返して設定できます。
どのトップレベルウィンドウも、モーダルダイアログによってブロックされないようにマークできます。このプロパティーを使用することで、モーダル除外モードを設定できます。Window クラスの setModalExclusionType メソッドは、次のいずれかのモーダル除外モードを指定します: APPLICATION_EXCLUDE、TOOLKIT_EXCLUDE、または NO_EXCLUDE。
モーダリティーの詳細については、Swing チュートリアルの「How to Use Modality in Dialogs」セクションを参照してください。
Desktop API (java.awt.Desktop) は、Java アプリケーションが特定のファイルタイプに関連付けられたデフォルトアプリケーションと対話できるように提供されています。提供されているアクションはすべて、次のような Desktop.Action 列挙インスタンスとして表されます。
あるアクションが現在のプラットフォームでサポートされているかどうかをチェックするには、Desktop クラスの isSupported メソッドを使用します。
Desktop クラスの使用方法の詳細については、Swing チュートリアルの「How to Integrate with the Desktop Class」セクションを参照してください。
仮想マシンの起動前にアプリケーションからスプラッシュ画面を表示するための新しいソリューションが導入されました。SplashScreen クラスにスプラッシュ画面を作成するように要求することはできませんが、Java アプリケーションはスプラッシュ画面を閉じたり、スプラッシュ画面のイメージを変更したり、イメージの位置やサイズを取得したり、スプラッシュ画面内でペイントしたりできます。SplashScreen クラスのインスタンスを取得するには、getSplashScreen() static メソッドを使用します。
コマンド行からスプラッシュ画面付きでアプリケーションを実行するには、次のコマンドを使用します。
java -splash:<file name> <class name>
スプラッシュ画面の詳細については、Swing チュートリアルの「How to Create a Splash Screen」セクションを参照してください。
SystemTray クラスは、デスクトップのシステムトレイを表すためのものです。システムトレイにアクセスするには、getSystemTray() static メソッドを呼び出します。システムトレイには、TrayIcon クラスオブジェクトで表される 1 つ以上のトレイアイコンを含めることができます。ただし、TrayIcon クラスの機能はトレイアイコンを作成することだけではありません。これには、テキストツールヒント、ポップアップメニュー、およびバルーンメッセージも含まれます。
TrayIcon trayIcon = new TrayIcon(createImage("icon.gif", "tray icon"));
trayIcon.displayMessage("Sun TrayIcon Demo",
"This is an info message", TrayIcon.MessageType.INFO);
trayIcon.setToolTip("Sun TrayIcon");
注: TrayIcon クラスの現在の実装は、Swing コンポーネントの制限付きサポートを提供します。この問題に対する回避方法案は、バグデータベース内に記述されています。バグ ID 6285881 を参照してください。
システムトレイやトレイアイコンの詳細については、Swing チュートリアルの「How to Use the System Tray」セクションを参照してください。
java.awt.Component クラスの次の 2 つの新メソッドを使えば、コンポーネントの最上部から測定されたベースラインを取得したり、コンポーネントのサイズ変更時にベースラインの変更を処理したりできます。
public int getBaseline(int width int height)public Component.BaselineResizeBehavior getBaselineResizeBehavior()FlowLayout:
コンポーネントをベースラインに沿って垂直方向にそろえる操作を制御するために、次の 2 つのメソッドが導入されました。
GridBagLayout:
GridBagLayout クラスによるコンポーネントのレイアウト機能を強化するために、次の制約が GridBagConstraints クラスに追加されました。
BASELINEBASELINE_LEADINGBASELINE_TRAILINGABOVE_BASELINEABOVE_BASELINE_LEADINGABOVE_BASELINE_TRAILINGBELOW_BASELINEBELOW_BASELINE_LEADINGBELOW_BASELINE_TRAILINGさらに、GridBagLayout によるコンポーネントレイアウト中にコンテナ内のすべてのコンポーネントの配置、サイズ、およびベースラインパラメータを保存するために、 GridBagLayoutInfo クラスが導入されました。
Window クラスの拡張機能ウィンドウのアイコンとして表示されるイメージを処理するための新メソッドが、Window クラスに追加されました。setIconImage(Image image) メソッドが、1 つのイメージのみを設定するのに対し、setIconImages(List<? extends Image> icons) メソッドは、さまざまなサイズの一連のイメージ (プラットフォーム機能に応じて適用される) をサポートします。
Java SE 6 では、親フレームなしで Window または Dialog オブジェクトを作成でき、そのようなオブジェクトのコンストラクタの owner パラメータは null に等しくなります。
マウスドラッグイベントは、オペレーティングシステムのドラッグ感度設定に達したあとで受信されていました。提案されたソリューションでは、オペレーティングシステムのドラッグ距離パラメータが無視されます。マウスが最初に動いた時点で Java ドラッグイベントが生成されます。
ウィンドウの最大化中に、カーソルの更新に不可欠ないくつかのイベントが配信されていませんでした。修正には、XWindow 内での XCrossingEvent 処理が含まれます。
Alt+Tab キーを使って Java ウィンドウからネイティブアプリケーションウィンドウに移動したあとで Java ウィンドウに戻ると、Java ウィンドウの最初のメニュー項目にフォーカスが移動していました。提案された修正により、Java ウィンドウで最初にフォーカスが存在していたコンポーネントにフォーカスが残るようになりました。
JTextField や JTextArea などの編集可能フィールドが、編集できなくなったりフォーカスを取得できなくなったりしていました (以前に編集されたフィールドでも)。コンボボックスやテーブル、ラジオボタンといったその他のコンポーネントは、編集可能なままです。
XWindow.java コードには、マルチクリック処理がありません。このため、ユーザーが画面上でマウスを Linux ボックスにドラッグすると、ユーザーがシングルクリックを期待しているのにダブルクリックが発生していました。同様に、ユーザーがクリックなしを期待しているのにシングルクリックが発生していました。この修正には、マウスを少し動かしただけではマルチクリック状態変数が消去されないようにするスマッジ係数を適用するために、AWT_MULTICLICK_SMUDGE 変数が含まれます。
フォーカスが、アプレット自体によって取得されず、埋め込まれたフレームに移動しているようでした。この非互換性は、Java SE 1.4 に新しいフォーカスアーキテクチャーが導入されたことが原因です。この修正により、最初の正しい動作が回復されます。
Frame オブジェクトの最小サイズが適用されていないWindow.setMinimumSize() メソッドが変更されて、ユーザーがトップレベルウィンドウを指定されたサイズより小さくできなくなりました。これまで、トップレベルウィンドウで設定された最小サイズはプラットフォームによって無視されていたため、トップレベルウィンドウの minimumSize プロパティーを独自のニーズのために使用するコードがこの変更の影響を受ける可能性があります。
6199167: ライブサイズ変更
Windows 上のネイティブアプリケーションは、サイズ変更時に動的に再レイアウトおよび再ペイントするためのプロパティーを備えていました。このプロパティーはシステムデスクトップ設定によって制御されていました。Java はこのプロパティーをデフォルトで無効にします。Java SE 6 では、この必須プロパティーがデフォルトで有効化されます。
ロケールの定義が不適切であった場合、ネイティブインプットメソッドは keysym を処理せず、それらをそのまま AWT handleKeyEvent ルーチンに渡していました。この修正で変換テーブルが追加されたので、インプットメソッドがない状況でもキーイベント処理が一般に簡素化されます。
次に、リリース 6.0 で発生する可能性がある既知の問題のリストを示します。
JWindow コンポーネントがほかのすべてのウィンドウの手前に表示されるSolaris と Linux で、JWindow コンポーネントがほかのすべてのウィンドウの手前に表示され、ほかのウィンドウがその背後に隠れてしまいます。この問題を回避するには、装飾なしのフレームを使用してください。
トップレベルの表示/破棄を繰り返すなど、いくつかの複合的な状況下で、JVM がクラッシュすることがあります。