Java中的showMessageDialog中frame和null有什么区别?

时间:2013-08-23 10:37:47

标签: java swing

假设我有一个JFrame类的对象作为框架

我想知道

之间有什么区别
JOptionPane.showMessageDialog(null,message) 

JOptionPane.showMessageDialog(frame,message)

打印出来的东西。给出相同的结果,它们会弹出同一个地方。所以我想知道这两者之间究竟有什么区别?实际上在背景中会发生什么不同?

4 个答案:

答案 0 :(得分:5)

提供框架或任何其他组件时,选项窗格将弹出组件的中间位置。但是,如果您提供null,则它将在屏幕中间弹出。

在你的情况下,我猜你的Jframe是你的屏幕尺寸。因此,如果您减小框架尺寸并在默认位置(即左上角)启动它,那么您可能会看到差异。

答案 1 :(得分:5)

// the dialog is centered on the desktop
JOptionPane.showMessageDialog(null,message)

// the dialog is centered on the frame
JOptionPane.showMessageDialog(frame,message)

答案 2 :(得分:4)

来自java文档:

  

为父级   定义要作为此对话框的父级的Component。它以两种方式使用:包含它的Frame用作对话框的Frame父级,其屏幕坐标用于放置对话框。通常,对话框位于组件的正下方。该参数可以为空,在这种情况下,默认帧用作父对象,对话框将在屏幕上居中(取决于L& F)。

有关详细信息,请参阅文档here

答案 3 :(得分:2)

两者都会做same stuff

  

在该示例中,我对JOptionPane showMessageDialogmethod的第一个参数是一个frameobject(可能是JFrame的一个实例)。如果由于某种原因你没有对JFrameor JWindow实例的引用,你可以将该字段设为null,并仍然显示相同的JOptionPane对话框,

来自docs

  

parentComponent - 确定显示对话框的框架;如果为null,或者如果parentComponent没有Frame,则使用默认的Frame。

默认框架是您的主要screen