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
クラスに追加されました。
BASELINE
BASELINE_LEADING
BASELINE_TRAILING
ABOVE_BASELINE
ABOVE_BASELINE_LEADING
ABOVE_BASELINE_TRAILING
BELOW_BASELINE
BELOW_BASELINE_LEADING
BELOW_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がクラッシュすることがあります。