6

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

4

3 回答 3

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,但您可以将其设置为您想要的任何值。

于 2010-02-16T04:58:16.840 回答
0

's的JavaDocJFileChoosershowDialog看来,您似乎无法很好地控制对话框的放置位置。

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

于 2010-02-16T04:57:01.300 回答
0

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

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

这应该可以解决问题。

您也可以在这里查看以供参考。

于 2015-07-08T06:57:38.720 回答