什么是JFolderChooser.showOpenDialog中的父组件

时间:2010-12-28 11:07:57

标签: java components parent jfilechooser

案例1:

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

案例2:

JFileChooser myFileChooser;
myFileChooser.showOpenDialog(null);

这两种情况有什么实际区别?

2 个答案:

答案 0 :(得分:3)

查看Javileoc for JFileChooser

  

父参数确定两个   东西:打开的框架   对话框取决于和组件   定位外观应该   在放置对话框时考虑。如果   父是一个Frame对象(例如   一个JFrame)然后对话框依赖于   框架和外观   定位对话框相对于   框架(例如,居中于   帧)。如果父级是组件,   然后对话框取决于框架   包含组件,是   相对于组件定位   (例如,居中于   零件)。如果父级为空,   然后对话框取决于没有可见的   窗口,它放在一个   依赖于外观和感觉的位置   作为屏幕的中心。

在内部,它尝试使用此JOptionPane.getWindowForComponent(parent)使用父窗口获取窗口。这反过来检查父母是否为空......

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

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

  

返回一个工具箱 - 私有,共享,   隐形框架作为所有者   用创建的JDialogs和JWindows   null所有者。

答案 1 :(得分:1)

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

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

跳这个有帮助!