Java 设置JFileChooser的位置
如何设置Java 设置JFileChooser的位置,java,swing,jfilechooser,Java,Swing,Jfilechooser,如何设置JFileChooser窗口的位置,我尝试了setLocation()和setBounds()方法,但都不起作用。从上看,似乎您无法控制对话框的放置位置 父参数确定两个事物:打开对话框依赖的框架和放置对话框时应该考虑外观和感觉的组件。如果父对象是帧对象(例如JFrame),则对话框取决于帧,并且“外观”相对于帧定位对话框(例如,位于帧的中心)。如果父对象是零部件,则对话框取决于包含零部件的框架,并相对于零部件定位(例如,位于零部件的中心)。如果父项为null,则对话框依赖于无可见窗口,并
JFileChooser
窗口的位置,我尝试了setLocation()
和setBounds()
方法,但都不起作用。从上看,似乎您无法控制对话框的放置位置
父参数确定两个事物:打开对话框依赖的框架和放置对话框时应该考虑外观和感觉的组件。如果父对象是帧对象(例如JFrame),则对话框取决于帧,并且“外观”相对于帧定位对话框(例如,位于帧的中心)。如果父对象是零部件,则对话框取决于包含零部件的框架,并相对于零部件定位(例如,位于零部件的中心)。如果父项为null,则对话框依赖于无可见窗口,并且它被放置在依赖于外观的位置,例如屏幕的中心
不幸的是,没有简单的方法可以做到这一点,因为无论何时显示选择器,内部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,但您可以将其设置为任何您想要的位置。您可以尝试将JFileChooser的父级设置为当前的JFrame/JPanel
JFrame parentToBe = new JFrame();
JFileChooser chooser = new JFileChooser();
int pathSelection = chooser.showSaveDialog(parentToBe);
这应该能奏效
你也可以参考。-1这个答案是错误的。你试过了吗
JFileChooser
忽略setLocation
方法,无论您设置的是哪一个父级。