2

ケース 1:

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

ケース 2:

JFileChooser myFileChooser;
myFileChooser.showOpenDialog(null);

2つのケースの実際的な違いは何ですか?

4

2 に答える 2

6

JFileChooser の Javadoc を確認してください

親引数は、開いているダイアログが依存するフレームと、ダイアログを配置するときに Look & Feel が考慮する必要があるコンポーネントの 2 つのことを決定します。親が Frame オブジェクト (JFrame など) である場合、ダイアログはフレームに依存し、ルック アンド フィールによってダイアログがフレームに対して相対的に配置されます (たとえば、フレームの中央に配置されます)。親がコンポーネントの場合、ダイアログはコンポーネントを含むフレームに依存し、コンポーネントに対して相対的に配置されます (たとえば、コンポーネントの中央に配置されます)。親が nullの場合、ダイアログは表示されているウィンドウに依存せず、画面の中央など、ルック アンド フィールに依存する位置に配置されます。

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

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

null の場合、ルート レベルのフレームが親コンテナーとして返されます。内部の使用SwingUtilities.getSharedOwnerFrame()。のjavadocはSwingUtilities.getSharedOwnerFrame()言う...

null 所有者で作成された JDialog および JWindows の所有者となる、ツールキット プライベートで共有された非表示の Frame を返します。

于 2010-12-28T11:15:15.743 に答える
1

親を指定して、ダイアログがどのコンポーネントに関連しているかを判別できます。ダイアログの位置を決定します(親に対して中央揃え)。また、ダイアログがモーダルになり、親ウィンドウがブロックされると思います。

null を指定すると、表示されるダイアログはどのコンポーネントにも属さず、画面の左上または中央に表示されると思います (最後のほうが発生する可能性が高く、テストしていません)。

これが役立つホップ!

于 2010-12-28T11:18:45.367 に答える