Java JFolderChooser.showOpenDialog中的父组件是什么

Java JFolderChooser.showOpenDialog中的父组件是什么,java,components,parent,jfilechooser,Java,Components,Parent,Jfilechooser,案例1: 案例2: JFileChooser myFileChooser; myFileChooser.showOpenDialog(this); //this = parent Component 这两种情况之间的实际区别是什么?请为JFileChooser签出Javadoc parent参数决定两个参数 事物:打开的框架 对话框依赖于其 定位外观和感觉应该 考虑何时放置对话框。如果 父对象是帧对象(例如 一个JFrame)则对话框取决于 框架和外观 将对话框放置在相对于 框架(例如,位于

案例1:

案例2:

JFileChooser myFileChooser;
myFileChooser.showOpenDialog(this); //this = parent Component

这两种情况之间的实际区别是什么?

请为JFileChooser签出Javadoc

parent参数决定两个参数 事物:打开的框架 对话框依赖于其 定位外观和感觉应该 考虑何时放置对话框。如果 父对象是帧对象(例如 一个JFrame)则对话框取决于 框架和外观 将对话框放置在相对于 框架(例如,位于 框架)。如果父对象是组件, 然后对话框取决于框架 包含该组件,并且是 相对于零部件定位 (例如,位于 组件)。如果父项为空, 然后,对话框依赖于“不可见” 窗口,它被放置在一个 看起来和感觉依赖于这样的位置 作为屏幕的中心

在内部,它尝试使用父级,使用这个
JOptionPane.getWindowForComponent(父级)
获取一个窗口。然后检查父项是否为null

JFileChooser myFileChooser;
myFileChooser.showOpenDialog(null);
如果为null,则根级别的框架将作为父容器返回。 使用内部
SwingUtilities.getSharedOwnerFrame()
SwingUtilities.getSharedOwnerFrame()的javadoc说

返回工具箱私有、共享、, 不可见的框架将成为的所有者 使用创建的JDialogs和JWindows 空所有者


可以指定父级以确定对话框与哪个组件相关。它将确定对话框的位置(居中,相对于父级)。我还猜测对话框将是模态的,从而阻塞父窗口

如果指定null,显示的对话框将不属于任何组件,我猜它将显示在屏幕的左上角或中间(最后一个更可能发生,我没有测试)

跳这个有帮助

if (parentComponent == null)
    return getRootFrame();