使用JOptionPane.showMessageDialog对中对话框

时间:2009-08-12 11:13:18

标签: java swing

我一直在使用类似以下的代码来显示对话框:

JOptionPane.showMessageDialog(JOptionPane.getFrameForComponent(this), … yada

但是,我现在认为这是“更正确”:

JOptionPane.showMessageDialog(getRootPane(), … yada

人们更喜欢/推荐什么?

2 个答案:

答案 0 :(得分:3)

两者都没有“更正确” - 它只取决于你想要的效果。来自JOptionPane JavaDocs -

  

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

在您的情况下,您希望对话框以框架为中心 - JOptionPane.getFrameForComponent(组件)或SwingUtilities.getWindowAncestor(组件)可以在任何组件中工作; getRootPane()仅适用于RootPaneContainer(即可能是JFrame),您也可以在该上下文中使用“this”。

答案 1 :(得分:1)

例如,如果您要延长JFrameJDialog,则只能使用this作为参数:

JOptionPane.showMessageDialog(this, ...);