ウィンドウの場所を設定するにはどうすればよいですか、メソッドJFileChooser
を試し ましたが、機能しません。setLocation()
setBounds()
3 に答える
残念ながら、それを行う簡単な方法はありません。チューザーを表示するたびに、内部のcreateDialogメソッドが場所を親の中心に設定するためです。
これを行う1つの方法は、JFileChooserをサブクラス化し、次のようにcreateDialogメソッドをオーバーライドすることです。
static class MyChooser extends JFileChooser {
protected JDialog createDialog(Component parent)
throws HeadlessException {
JDialog dlg = super.createDialog(parent);
dlg.setLocation(20, 20);
return dlg;
}
}
これで、JFileChooserの代わりにMyChooserを直接使用できます。上記のコードでは、場所を20、20にハードコーディングしていますが、任意に設定できます。
のJavaDocからは、ダイアログJFileChooser
がshowDialog
配置される場所をあまり制御できないように見えます。
親引数は、開いているダイアログが依存するフレームと、ダイアログを配置するときにルックアンドフィールが考慮すべき位置のコンポーネントの2つを決定します。親がFrameオブジェクト(JFrameなど)の場合、ダイアログはフレームに依存し、ルックアンドフィールはダイアログをフレームに対して相対的に配置します(たとえば、フレームの中央に配置します)。親がコンポーネントの場合、ダイアログはコンポーネントを含むフレームに依存し、コンポーネントに対して相対的に配置されます(たとえば、コンポーネントの中央に配置されます)。親がnullの場合、ダイアログは表示されているウィンドウに依存せず、画面の中央など、ルックアンドフィールに依存する位置に配置されます。
JFileChooserの親を現在のJFrame/JPanelに設定してみることができます。
JFrame parentToBe = new JFrame();
JFileChooser chooser = new JFileChooser();
int pathSelection = chooser.showSaveDialog(parentToBe);
これでうまくいくはずです。
こちらも参考にしてください。