Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JOptionPane窗口在后台打开_Java_Swing_Joptionpane - Fatal编程技术网

Java JOptionPane窗口在后台打开

Java JOptionPane窗口在后台打开,java,swing,joptionpane,Java,Swing,Joptionpane,我正在开发一个swing应用程序,只是一个关于JOptionPane.showMessageDialog()的小问题,这让我感到困扰: JOptionPane.showMessageDialog(空,“记录输入成功”) 如果我编写此代码,消息窗口将显示在父帧的后面 JOptionPane.showMessageDialog(这是“记录输入成功”)而此代码会自动将窗口放置在父帧上 问题是:当实现

我正在开发一个swing应用程序,只是一个关于
JOptionPane.showMessageDialog()
的小问题,这让我感到困扰:

  • JOptionPane.showMessageDialog(空,“记录输入成功”)
    如果我编写此代码,消息窗口将显示在父帧的后面
  • JOptionPane.showMessageDialog(这是“记录输入成功”)
    而此代码会自动将窗口放置在父帧上

问题是:当实现
作为第一个参数时,我会在当前父帧的背景中获得消息,而如果我将
作为第一个参数写入,窗口将覆盖父帧。为什么会发生这种情况?

java关键字
this
用于(在本例中)引用当前类-因此您引用的是父窗口。请参阅此链接,它非常方便:

方法中的

showMessageDialog(Component parentComponent, Object message)
第一个参数设置对话框的父级:

父组件

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


我假设该方法出现在
JFrame
类中,在这种情况下,将
this
作为参数传递会将父组件设置为该框架。

问题是什么?当窗口“拥有”时,对话框会出现在其上方并将其阻止。这就是它们的工作原理问题是:当实现
null
作为第一个参数时,我会在当前父帧的背景上获得消息,而如果我将
这个
作为第一个参数写入,窗口将覆盖父帧。为什么会发生这种情况?@MadProgrammer:owned是指使用
THIS
?作为状态,第一个参数决定父帧。当对话框被指定时(即,您将
作为参数传递的情况下),该对话框被放置在该对话框之上。如果未指定父级,则结果在某种程度上取决于系统。