4

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

我想知道这之间有什么区别

JOptionPane.showMessageDialog(null,message) 

JOptionPane.showMessageDialog(frame,message)

打印出一些东西。两者都给出相同的结果,并且它们在同一个地方弹出。所以我想知道这两者之间的真正区别是什么?在背景中实际发生了什么不同?

4

4 回答 4

5

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

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

于 2013-08-23T10:45:45.160 回答
5
// the dialog is centered on the desktop
JOptionPane.showMessageDialog(null,message)

// the dialog is centered on the frame
JOptionPane.showMessageDialog(frame,message)
于 2013-08-23T10:46:10.197 回答
4

来自java文档:

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

有关更多信息,请阅读此处的文档

于 2013-08-23T10:45:22.280 回答
2

两者都会做几乎相同的事情

在该示例中,我对 JOptionPane showMessageDialog 方法的第一个参数是一个框架对象(它可能是一个 JFrame 的实例)。如果由于某种原因您没有对 JFrameor JWindow 实例的引用,您可以将该字段设为空,并且仍然显示相同的 JOptionPane 对话框,

文档

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

默认框架是,你的主要screen

于 2013-08-23T10:44:27.650 回答