ケース 1:
JFileChooser myFileChooser;
myFileChooser.showOpenDialog(this); //this = parent Component
ケース 2:
JFileChooser myFileChooser;
myFileChooser.showOpenDialog(null);
2つのケースの実際的な違いは何ですか?
ケース 1:
JFileChooser myFileChooser;
myFileChooser.showOpenDialog(this); //this = parent Component
ケース 2:
JFileChooser myFileChooser;
myFileChooser.showOpenDialog(null);
2つのケースの実際的な違いは何ですか?
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 を返します。
親を指定して、ダイアログがどのコンポーネントに関連しているかを判別できます。ダイアログの位置を決定します(親に対して中央揃え)。また、ダイアログがモーダルになり、親ウィンドウがブロックされると思います。
null を指定すると、表示されるダイアログはどのコンポーネントにも属さず、画面の左上または中央に表示されると思います (最後のほうが発生する可能性が高く、テストしていません)。
これが役立つホップ!