设置JFileChooser的位置

时间:2010-02-16 04:40:56

标签: java swing jfilechooser

我们如何设置JFileChooser窗口的位置,我尝试了setLocation()setBounds()方法,但它不起作用。

3 个答案:

答案 0 :(得分:9)

不幸的是,没有简单的方法可以做到这一点,因为无论何时展示选择器,内部createDialog方法都会将位置设置为父级的中心。

一种方法是继承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;
        }
    }

现在你可以直接使用MyChooser而不是JFileChooser。在上面的代码中,我将位置硬编码为20,20,但您可以将其设置为您想要的任何位置。

答案 1 :(得分:0)

JavaDoc for JFileChooser's showDialog开始,您可能无法对对话框的放置位置进行大量控制。

  

父参数确定两件事:打开对话框所依赖的框架以及放置对话框时外观应考虑的位置的组件。如果父对象是Frame对象(例如JFrame),则对话框取决于框架和外观相对于框架定位对话框(例如,在框架上居中)。如果父组件是组件,则对话框取决于包含组件的框架,并且相对于组件定位(例如,以组件为中心)。如果父项为null,则对话框取决于没有可见窗口,并且它被放置在依赖于外观的位置,例如屏幕的中心。

答案 2 :(得分:0)

您可以尝试将JFileChooser的父级设置为当前的JFrame / JPanel。

JFrame parentToBe = new JFrame();
JFileChooser chooser = new JFileChooser();
int pathSelection = chooser.showSaveDialog(parentToBe);

这应该可以解决问题。

您还可以查看here以供参考。