2010-12-28 15 views
1

ケース1は何です:親コンポーネントはJFolderChooser.showOpenDialog

JFileChooser myFileChooser; 
myFileChooser.showOpenDialog(this); //this = parent Component 

ケース2:

JFileChooser myFileChooser; 
myFileChooser.showOpenDialog(null); 

2例の間に実用的な違いは何ですか?オープン ダイアログが依存するフレームと 位置ダイアログを配置するときにLook&Feelが 検討すべきコンポーネント:

答えて

3

アウトJFileChooserの

のJavadocは、親引数は2つの 事を決定します。親は、(例えばJFrameの など)Frameオブジェクトである 場合、ダイアログが フレームルックに依存し、(例えば、 フレーム上に中心) フレームに位置ダイアログ相対感じます。親がコンポーネントである場合、 ダイアログは、コンポーネントを含む フレームに依存し、 (たとえば、 コンポーネントの中央に配置されます)に相対的に配置された です。 親がnullの場合、 ダイアログは表示されない ウィンドウに依存し、 ルックアンドフィールに依存する位置( )を画面の中央に配置します。

内部では、JOptionPane.getWindowForComponent(parent)を使用して親を使用してウィンドウを取得しようとします。親がnullかどうかを次にチェックします。

if (parentComponent == null) 
    return getRootFrame(); 

nullの場合、親レベルのフレームが親コンテナとして返されます。 SwingUtilities.getSharedOwnerFrame()内部を使用しています。 SwingUtilities.getSharedOwnerFrame()のjavadocは ヌル所有者で作成 持たないJDialogとJWindowsのための所有者であるツールキット - プライベート、共有、 目に見えないフレームを返し

...

を言います。

1

ダイアログボックスに関連するコンポーネントを決定するために親を指定できます。ダイアログの位置が決定されます(親を基準にして中央に配置されます)。私はまた、ダイアログがモーダルなので、親ウィンドウをブロックすると推測します。

nullを指定した場合、表示されるダイアログはコンポーネントに属しません。画面の左上または中央に表示されます(最後に発生する可能性があります。未検証)。

ホップこれが役に立ちます!

関連する問題