假设我有一个JFrame类的对象作为框架
我想知道
之间有什么区别JOptionPane.showMessageDialog(null,message)
和
JOptionPane.showMessageDialog(frame,message)
打印出来的东西。给出相同的结果,它们会弹出同一个地方。所以我想知道这两者之间究竟有什么区别?实际上在背景中会发生什么不同?
答案 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
。